{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-06-27T21:12:14.927631Z",
     "start_time": "2017-06-27T21:12:11.912537Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "import os \n",
    "import sys\n",
    "import numpy as np\n",
    "from selenium import webdriver\n",
    "import glob\n",
    "import itertools\n",
    "import urllib\n",
    "import time\n",
    "import cv2\n",
    "from random import shuffle\n",
    "import ffmpy\n",
    "import matplotlib.pyplot as plt\n",
    "import keras\n",
    "import imp\n",
    "import label_data\n",
    "import imp\n",
    "import pandas as pd\n",
    "imp.reload(label_data)\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "#### Convert movies to avi"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-06-20T23:37:00.154737Z",
     "start_time": "2017-06-20T23:28:20.979158Z"
    },
    "hidden": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "9/10"
     ]
    }
   ],
   "source": [
    "movies = glob.glob('/Users/alexandreattia/Music/iTunes/iTunes Music/TV Shows/Les Simpson/*.mp4') + \\\n",
    "glob.glob('/Users/alexandreattia/Music/iTunes/iTunes Music/TV Shows/Les Simpson/*.m4v')\n",
    "top_k = 10\n",
    "for p in range(top_k):\n",
    "    print('\\r%i/%i' % (p,top_k), end='')\n",
    "    ff = ffmpy.FFmpeg(\n",
    "        inputs={np.random.choice(movies): None},\n",
    "        outputs={'./video%d.avi'%p: None})\n",
    "    ff.run()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 174,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-06-16T19:21:14.847482Z",
     "start_time": "2017-06-16T19:20:26.890895Z"
    },
    "collapsed": true,
    "hidden": true
   },
   "outputs": [],
   "source": [
    "movies = glob.glob('/Users/alexandreattia/Music/iTunes/iTunes Music/TV Shows/Les Simpson/*.mp4')\n",
    "top_k = 1\n",
    "movies = [k for k in movies if 'un ennemi tr' in k.lower()]\n",
    "for i, p in enumerate(movies[:top_k]):\n",
    "    ff = ffmpy.FFmpeg(\n",
    "        inputs={p: None},\n",
    "        outputs={'./video_target_%s.avi' % i: None})\n",
    "    ff.run()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "#### Download pictures"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-05-24T00:28:48.758267Z",
     "start_time": "2017-05-24T00:28:48.752673Z"
    },
    "collapsed": true,
    "hidden": true
   },
   "outputs": [],
   "source": [
    "for character in characters:\n",
    "    char = character.split('/')[2]\n",
    "    browser = webdriver.Chrome()\n",
    "    browser.set_page_load_timeout(10)\n",
    "    time.sleep(np.random.randint(5, 13)*0.1)\n",
    "    for p in range(5):\n",
    "        link = \"https://search.aol.com/aol/image?q=%s+%s&s_it=searchtabs&v_t=na&page=%d\" % ('simpson', char.replace('_','+'), p+1)\n",
    "        try:\n",
    "            browser.get(link)\n",
    "        except:\n",
    "            time.sleep(np.random.randint(7)*0.1)\n",
    "        images = browser.find_elements_by_tag_name('img')\n",
    "        for i, image in enumerate(images):\n",
    "            src = image.get_attribute(\"src\")\n",
    "            if src:\n",
    "                path, _ = urllib.request.urlretrieve(src)\n",
    "                os.rename(path, './characters/%s/aol_%d_%s.png' % (char,p,i))\n",
    "        time.sleep(np.random.randint(10)*0.1)\n",
    "    browser.quit()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-06-12T17:12:17.396815Z",
     "start_time": "2017-06-12T17:10:41.004Z"
    },
    "collapsed": true,
    "hidden": true
   },
   "outputs": [],
   "source": [
    "char = 'kent brockman'\n",
    "link = \"https://images.search.yahoo.com/search/images;_ylt=AwrTcYSZtSVZ\\\n",
    "boAA7FuJzbkF;_ylu=X3oDMTBsZ29xY3ZzBHNlYwNzZWFyY2gEc2xrA2J1dHRvbg--;_ylc=X1MDOTYwNjI4NTcEX\\\n",
    "3IDMgRhY3RuA2NsawRiY2sDZWltbXRkdGFpcHQ0aCUyNmIlM0Q0JTI2ZCUzREJVYVpCTE5wWUVLSUIxbWNQSzRYNEdYZTF\\\n",
    "5NC0lMjZzJTNEOTglMjZpJTNEbG93NXlrSzFTUXdtTEhLby5Md2EEY3NyY3B2aWQDUno0T0tUSXdOaTdwV3QxdlZTejBrUWU3Tnp\\\n",
    "NdU53QUFBQUNtT00yVgRmcgNzZnAEZnIyA3NhLWdwBGdwcmlkA3lnQ05QTnlSU2dxRTVvRl8zOWt4NkEEbXRlc3RpZANudWxsBG5fc3VnZwMxBG9yaWdpb\\\n",
    "gNpbWFnZXMuc2VhcmNoLnlhaG9vLmNvbQRwb3MDMARwcXN0cgMEcHFzdHJsAwRxc3RybAMyMwRxdWVyeQNhYnJhaGFtIGdyYW5kcGEgc2ltcHNvbgR0X3N0\\\n",
    "bXADMTQ5NTY0MzgwNQR2dGVzdGlkA251bGw-?gprid=ygCNPNyRSgqE5oF_39kx6A&pvid=Rz4OKTIwNi7pWt1vVSz0kQe7NzMuNwAAAACmO\\\n",
    "M2V&p={}&fr=sfp&fr2=sb-top-images.search.yahoo.com&ei=UTF-8&n=60&x=wrt\".format(char.replace('_','+') + 'simpson')\n",
    "\n",
    "#link='http://www.simpsoncrazy.com/pictures/bart'\n",
    "\n",
    "browser = webdriver.Chrome()\n",
    "browser.set_page_load_timeout(10)\n",
    "try:\n",
    "    browser.get(link)\n",
    "except:\n",
    "    time.sleep(np.random.randint(7)*0.1)\n",
    "time.sleep(7)\n",
    "images = browser.find_elements_by_tag_name('img')\n",
    "for i, image in enumerate(images):\n",
    "    src = image.get_attribute(\"src\")\n",
    "    if src:\n",
    "        path, _ = urllib.request.urlretrieve(src)\n",
    "        os.rename(path, './characters/%s/yahoo_%d_%s.jpg' % (char,np.random.randint(20), i))\n",
    "for elem in glob.glob('./characters/%s/*.png'):\n",
    "    k = cv2.imread(elem)\n",
    "    if not k:\n",
    "        os.remove(elem)\n",
    "browser.quit()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "#### Counting"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-06-20T18:16:18.193295Z",
     "start_time": "2017-06-20T18:16:17.740241Z"
    },
    "hidden": true,
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/alexandreattia/Desktop/Work/workenv/lib/python3.5/site-packages/ipykernel/__main__.py:19: DeprecationWarning: \n",
      ".ix is deprecated. Please use\n",
      ".loc for label based indexing or\n",
      ".iloc for positional indexing\n",
      "\n",
      "See the documentation here:\n",
      "http://pandas.pydata.org/pandas-docs/stable/indexing.html#deprecate_ix\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>non-filtered</th>\n",
       "      <th>edited</th>\n",
       "      <th>labeled</th>\n",
       "      <th>total</th>\n",
       "      <th>train</th>\n",
       "      <th>test</th>\n",
       "      <th>true_total</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Homer Simpson</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2233</td>\n",
       "      <td>2233</td>\n",
       "      <td>1898</td>\n",
       "      <td>335</td>\n",
       "      <td>1176</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Ned Flanders</td>\n",
       "      <td>19</td>\n",
       "      <td>100</td>\n",
       "      <td>1348</td>\n",
       "      <td>1448</td>\n",
       "      <td>1231</td>\n",
       "      <td>217</td>\n",
       "      <td>1176</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Moe Szyslak</td>\n",
       "      <td>73</td>\n",
       "      <td>232</td>\n",
       "      <td>1215</td>\n",
       "      <td>1447</td>\n",
       "      <td>1230</td>\n",
       "      <td>217</td>\n",
       "      <td>1176</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Lisa Simpson</td>\n",
       "      <td>0</td>\n",
       "      <td>251</td>\n",
       "      <td>1142</td>\n",
       "      <td>1393</td>\n",
       "      <td>1184</td>\n",
       "      <td>209</td>\n",
       "      <td>1176</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Bart Simpson</td>\n",
       "      <td>124</td>\n",
       "      <td>0</td>\n",
       "      <td>1327</td>\n",
       "      <td>1327</td>\n",
       "      <td>1128</td>\n",
       "      <td>199</td>\n",
       "      <td>1176</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Marge Simpson</td>\n",
       "      <td>122</td>\n",
       "      <td>0</td>\n",
       "      <td>1291</td>\n",
       "      <td>1291</td>\n",
       "      <td>1097</td>\n",
       "      <td>194</td>\n",
       "      <td>1176</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>Krusty The Clown</td>\n",
       "      <td>0</td>\n",
       "      <td>281</td>\n",
       "      <td>935</td>\n",
       "      <td>1216</td>\n",
       "      <td>1034</td>\n",
       "      <td>182</td>\n",
       "      <td>1176</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Principal Skinner</td>\n",
       "      <td>32</td>\n",
       "      <td>83</td>\n",
       "      <td>1121</td>\n",
       "      <td>1204</td>\n",
       "      <td>1023</td>\n",
       "      <td>181</td>\n",
       "      <td>1176</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>Charles Montgomery Burns</td>\n",
       "      <td>0</td>\n",
       "      <td>298</td>\n",
       "      <td>905</td>\n",
       "      <td>1203</td>\n",
       "      <td>1023</td>\n",
       "      <td>180</td>\n",
       "      <td>1176</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>Milhouse Van Houten</td>\n",
       "      <td>186</td>\n",
       "      <td>106</td>\n",
       "      <td>945</td>\n",
       "      <td>1051</td>\n",
       "      <td>893</td>\n",
       "      <td>158</td>\n",
       "      <td>1051</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>Chief Wiggum</td>\n",
       "      <td>17</td>\n",
       "      <td>90</td>\n",
       "      <td>897</td>\n",
       "      <td>987</td>\n",
       "      <td>839</td>\n",
       "      <td>148</td>\n",
       "      <td>987</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>Abraham Grampa Simpson</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>934</td>\n",
       "      <td>934</td>\n",
       "      <td>794</td>\n",
       "      <td>140</td>\n",
       "      <td>934</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>Sideshow Bob</td>\n",
       "      <td>26</td>\n",
       "      <td>220</td>\n",
       "      <td>685</td>\n",
       "      <td>905</td>\n",
       "      <td>769</td>\n",
       "      <td>136</td>\n",
       "      <td>905</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>Apu Nahasapeemapetilon</td>\n",
       "      <td>40</td>\n",
       "      <td>64</td>\n",
       "      <td>560</td>\n",
       "      <td>624</td>\n",
       "      <td>530</td>\n",
       "      <td>94</td>\n",
       "      <td>624</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>Kent Brockman</td>\n",
       "      <td>0</td>\n",
       "      <td>113</td>\n",
       "      <td>383</td>\n",
       "      <td>496</td>\n",
       "      <td>422</td>\n",
       "      <td>74</td>\n",
       "      <td>496</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>Edna Krabappel</td>\n",
       "      <td>29</td>\n",
       "      <td>92</td>\n",
       "      <td>372</td>\n",
       "      <td>464</td>\n",
       "      <td>394</td>\n",
       "      <td>70</td>\n",
       "      <td>464</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>Comic Book Guy</td>\n",
       "      <td>363</td>\n",
       "      <td>80</td>\n",
       "      <td>382</td>\n",
       "      <td>462</td>\n",
       "      <td>393</td>\n",
       "      <td>69</td>\n",
       "      <td>462</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>Nelson Muntz</td>\n",
       "      <td>0</td>\n",
       "      <td>29</td>\n",
       "      <td>331</td>\n",
       "      <td>360</td>\n",
       "      <td>306</td>\n",
       "      <td>54</td>\n",
       "      <td>360</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>Lenny Leonard</td>\n",
       "      <td>25</td>\n",
       "      <td>53</td>\n",
       "      <td>253</td>\n",
       "      <td>306</td>\n",
       "      <td>260</td>\n",
       "      <td>46</td>\n",
       "      <td>306</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>Mayor Quimby</td>\n",
       "      <td>41</td>\n",
       "      <td>50</td>\n",
       "      <td>196</td>\n",
       "      <td>246</td>\n",
       "      <td>209</td>\n",
       "      <td>37</td>\n",
       "      <td>246</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>TOTAL</td>\n",
       "      <td>1098</td>\n",
       "      <td>2142</td>\n",
       "      <td>17455</td>\n",
       "      <td>19597</td>\n",
       "      <td>16657</td>\n",
       "      <td>2940</td>\n",
       "      <td>17419</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                        name  non-filtered  edited  labeled  total  train  \\\n",
       "0              Homer Simpson             1       0     2233   2233   1898   \n",
       "1               Ned Flanders            19     100     1348   1448   1231   \n",
       "2                Moe Szyslak            73     232     1215   1447   1230   \n",
       "3               Lisa Simpson             0     251     1142   1393   1184   \n",
       "4               Bart Simpson           124       0     1327   1327   1128   \n",
       "5              Marge Simpson           122       0     1291   1291   1097   \n",
       "6           Krusty The Clown             0     281      935   1216   1034   \n",
       "7          Principal Skinner            32      83     1121   1204   1023   \n",
       "8   Charles Montgomery Burns             0     298      905   1203   1023   \n",
       "9        Milhouse Van Houten           186     106      945   1051    893   \n",
       "10              Chief Wiggum            17      90      897    987    839   \n",
       "11    Abraham Grampa Simpson             0       0      934    934    794   \n",
       "12              Sideshow Bob            26     220      685    905    769   \n",
       "13    Apu Nahasapeemapetilon            40      64      560    624    530   \n",
       "14             Kent Brockman             0     113      383    496    422   \n",
       "15            Edna Krabappel            29      92      372    464    394   \n",
       "16            Comic Book Guy           363      80      382    462    393   \n",
       "17              Nelson Muntz             0      29      331    360    306   \n",
       "18             Lenny Leonard            25      53      253    306    260   \n",
       "19              Mayor Quimby            41      50      196    246    209   \n",
       "20                     TOTAL          1098    2142    17455  19597  16657   \n",
       "\n",
       "    test  true_total  \n",
       "0    335        1176  \n",
       "1    217        1176  \n",
       "2    217        1176  \n",
       "3    209        1176  \n",
       "4    199        1176  \n",
       "5    194        1176  \n",
       "6    182        1176  \n",
       "7    181        1176  \n",
       "8    180        1176  \n",
       "9    158        1051  \n",
       "10   148         987  \n",
       "11   140         934  \n",
       "12   136         905  \n",
       "13    94         624  \n",
       "14    74         496  \n",
       "15    70         464  \n",
       "16    69         462  \n",
       "17    54         360  \n",
       "18    46         306  \n",
       "19    37         246  \n",
       "20  2940       17419  "
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "characters = glob.glob('./characters/*')\n",
    "d = []\n",
    "dd = []\n",
    "for character in characters:\n",
    "    a = len([k for k in glob.glob(character + '/*') if 'edited' in k])\n",
    "    b = len([k for k in glob.glob(character + '/*') if 'pic_video' in k])\n",
    "    c = len([k for k in glob.glob(character + '/*') if 'pic_video' not in k and 'edited' not in k])\n",
    "    dd.append({'name' : character.split('/')[2].replace('_',' ').title(),\n",
    "               'edited' :a,\n",
    "               'labeled':b,\n",
    "               'total':a+b,\n",
    "               'non-filtered':c,\n",
    "               'train': round((a+b)*0.85),\n",
    "               'test': round((a+b)*0.15)})\n",
    "df = pd.DataFrame(dd)[['name', 'non-filtered',\n",
    "                       'edited', 'labeled','total',\n",
    "                      'train', 'test']].sort_values('total', ascending=False).reset_index(drop=True)\n",
    "df['true_total'] = df.total\n",
    "df.ix[df.total > (1000 / 0.85), 'true_total'] = int((1000 / 0.85))\n",
    "top_k = 20\n",
    "df2 =  pd.concat([df,pd.DataFrame({'name' : \"TOTAL\",\n",
    "           'edited' :df[:top_k].edited.sum(),\n",
    "           'labeled':df[:top_k].labeled.sum(),\n",
    "           'total':df[:top_k].total.sum(),\n",
    "           'non-filtered':df[:top_k]['non-filtered'].sum(),\n",
    "           'train': df[:top_k].train.sum(),\n",
    "           'test': df[:top_k].test.sum(),\n",
    "           'true_total': df[:top_k].true_total.sum()}, index=[top_k])])\n",
    "df2 = df2.sort_values('total', ascending=False).sort_index().reset_index(drop=True)\n",
    "df2[['name', 'non-filtered',\n",
    "    'edited', 'labeled','total',\n",
    "    'train', 'test', \"true_total\"]][:1+df2[df2.name == 'TOTAL'].index[0]]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "#### Filtering pictures "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-06-27T21:41:18.041945Z",
     "start_time": "2017-06-27T21:41:18.026754Z"
    },
    "hidden": true
   },
   "outputs": [],
   "source": [
    "characters = glob.glob('./characters/*')\n",
    "d = []\n",
    "for character in characters:\n",
    "    a = len([k for k in glob.glob(character + '/*') if 'edited' in k])\n",
    "    b = len([k for k in glob.glob(character + '/*') if 'pic_video' in k])\n",
    "    d.append((character,a+b))\n",
    "characters = [e[0] for e in sorted(d, key=lambda x:x[1], reverse=True)]\n",
    "\n",
    "top_k = 10\n",
    "characters = [e for e in characters if 'nelson' in e]\n",
    "for character in characters:\n",
    "    print(character.split('/')[2].replace('_',' ').upper())\n",
    "    pictures =  [k for k in glob.glob(character + '/*') if 'edited' not in k and 'pic_vid' not in k]\n",
    "    for pic in pictures:\n",
    "        img = cv2.imread(pic)\n",
    "        if img is not None:\n",
    "            plt.imshow(img)\n",
    "            plt.show()\n",
    "            f = input('Keep the pictures, crop it or delete it ? [Y,C,N]')\n",
    "            if f.lower() == 'skip':\n",
    "                break\n",
    "            if f.lower() in ['y', 'yes', '', 'keep', 'k']:\n",
    "                title = pic.replace('.jpg', '%d_edited.jpg' % np.random.randint(500, 5000)).replace(\n",
    "                            '.png', '%d_edited.jpg' % np.random.randint(500, 5000))\n",
    "                cv2.imwrite(title, img)\n",
    "                os.remove(pic)\n",
    "            elif f.lower() in ['crop', 'c']:\n",
    "                g = input('Right or Left half ? [R,L]')\n",
    "                if g.lower() in ['right', 'r']:\n",
    "                    img2 = img[:, int(img.shape[1]/2):]\n",
    "                    plt.imshow(img2)\n",
    "                    plt.show()\n",
    "                    h = input('Good')\n",
    "                    if h.lower() not in ['n', 'no']:\n",
    "                        title = pic.replace('.jpg', '%d_edited.jpg' % np.random.randint(500, 5000)).replace(\n",
    "                            '.png', '%d_edited.jpg' % np.random.randint(500, 5000))\n",
    "                        cv2.imwrite(title, img2)\n",
    "                        os.remove(pic)\n",
    "                    else:\n",
    "                        os.remove(pic)\n",
    "                elif g.lower() in ['left', 'l']:\n",
    "                    img2 = img[:, :int(img.shape[1]/2)]\n",
    "                    plt.imshow(img2)\n",
    "                    plt.show()\n",
    "                    h = input('Good')\n",
    "                    if h.lower() not in ['n', 'no']:\n",
    "                        title = pic.replace('.jpg', '%d_edited.jpg' % np.random.randint(500, 5000)).replace(\n",
    "                            '.png', '%d_edited.jpg' % np.random.randint(500, 5000))\n",
    "                        cv2.imwrite(title, img2)\n",
    "                        os.remove(pic)\n",
    "                    else:\n",
    "                        os.remove(pic)\n",
    "            elif f.lower() in ['no','delete','d','n']:\n",
    "                os.remove(pic)\n",
    "        else:\n",
    "            os.remove(pic)\n",
    "        print('%d pictures edited' % len([k for k in glob.glob(character + '/*') if 'edited' in k]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "#### Data from videos"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-06-27T21:41:32.597131Z",
     "start_time": "2017-06-27T21:41:32.594514Z"
    },
    "hidden": true
   },
   "outputs": [],
   "source": [
    "imp.reload(label_data)\n",
    "label_data.labelized_data(to_shuffle=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "#### Auto-creating set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-06-20T02:14:43.664640Z",
     "start_time": "2017-06-20T02:14:43.591143Z"
    },
    "collapsed": true,
    "hidden": true
   },
   "outputs": [],
   "source": [
    "for k in map_characters.values():\n",
    "    if k not in [k.split('/')[2] for k in glob.glob('./autogenerate/*')]:\n",
    "        os.mkdir('./autogenerate/%s/'% k)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-06-20T02:16:52.165214Z",
     "start_time": "2017-06-20T02:16:29.254972Z"
    },
    "hidden": true,
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1644/1644"
     ]
    }
   ],
   "source": [
    "imp.reload(label_data)\n",
    "import train\n",
    "imp.reload(train)\n",
    "# map_characters = label_data.map_characters\n",
    "# label_data.generate_pic_from_videos()\n",
    "label_data.classify_pics()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-06-27T21:41:05.359658Z",
     "start_time": "2017-06-27T21:41:05.355310Z"
    },
    "hidden": true
   },
   "outputs": [],
   "source": [
    "for char in glob.glob('./autogenerate/*'):\n",
    "    character = char.split('/')[2]\n",
    "    pics = glob.glob(char+'/*')\n",
    "    shuffle(pics)\n",
    "    for pic in pics:\n",
    "        img = cv2.imread(pic)\n",
    "        plt.imshow(img)\n",
    "        plt.show()\n",
    "        corr = input('%s : Correct ? [Y/n] ' % character)\n",
    "        if corr.lower() in ['y', 'yes']:\n",
    "            os.rename(pic, './characters/%s/%s' % (character, pic.split('/')[3]))\n",
    "        elif corr.lower() == 'skip':\n",
    "            break\n",
    "        else:\n",
    "            os.remove(pic)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true,
    "heading_collapsed": true
   },
   "source": [
    "#### Clean Dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-06-21T23:49:14.949054Z",
     "start_time": "2017-06-21T23:49:14.939999Z"
    },
    "collapsed": true,
    "hidden": true
   },
   "outputs": [],
   "source": [
    "def mse(imageA, imageB):\n",
    "    if imageA.shape[0] == imageB.shape[0] and imageA.shape[1] == imageB.shape[1]:\n",
    "        err = np.sum((imageA.astype(\"float\") - imageB.astype(\"float\")) ** 2)\n",
    "        err /= float(imageA.shape[0] * imageA.shape[1])\n",
    "        return err\n",
    "    else:\n",
    "        return imageA.shape[0]*imageA.shape[1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-06-22T00:04:56.114157Z",
     "start_time": "2017-06-22T00:04:52.914777Z"
    },
    "collapsed": true,
    "hidden": true
   },
   "outputs": [],
   "source": [
    "pics = glob.glob('./characters/abraham_grampa_simpson/*.*')\n",
    "pics = {pic.split('/')[3].replace('.jpg', '') : cv2.imread(pic) for pic in pics}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-06-21T23:49:27.785674Z",
     "start_time": "2017-06-21T23:49:27.526969Z"
    },
    "hidden": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(416, 576, 3) (368, 496, 3)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x12282b5f8>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAACUCAYAAACdmeLWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvWmMZNl15/e7922xb5mRe1VlVWXW0l1d1dUrm2xuoqQh\nqYVDrSNpYEm2QRuY8dgGbFhjGDBm/GVgGLAHmMEAsi1r5LEki5alkaVuUeIuks1e2M1eauvas3Lf\nIjK2F/GWe/3hRURGZkZVZVVndReb+QcCmfHiLffdd9+5557lf4TWmn3sYx/72MeHF/KDbsA+9rGP\nfezjwWJf0O9jH/vYx4cc+4J+H/vYxz4+5NgX9PvYxz728SHHvqDfxz72sY8POfYF/T72sY99fMix\nL+j3sY97gBDis0KIS0KIK0KI3/mg27OPfewGYj+Ofh/72B2EEAbwLvBTwCzwKvBrWuvzH2jD9rGP\nu+CBaPT7Ws8+PqR4Briitb6mtfaAPwa+8AG3aR/7uCv2XNC3tZ5/DXwOeAT4NSHEI3t9nX3s4wPA\nOHCr5/tse9s+9vFQw3wA5+xqPQBCiI7Ws7+83cePBYQQXwK+BGBK48l8IrP19z7HKAUK0EKAIRGG\nJNQGABoIw5DA9xEIpNCk4g6GUAih0YjoWCnwVEigFCGRSTbwg+41AqW3NEAIEDr6LqREaLB6Wtcx\n6zZVuKO9hrkpOoTo7K927NdrGNZKtbdtXkPISNeUfY7t11FmezcpN3VUYZqYCGwhMDQYQBCqHfsZ\nxk5x12lzrwlbyOjCnudjSImQEsMwthynws0+kdJo/91ssGr3tVIhhmniNhV+AAqJ7DsC+kDsNKub\nnXYIUKGi3izT8up3PeGDEPT9tJ5n73RAOh7Tg+kkojNi2jfY/X4P6DywVtMDNLFYfMs5fxShtSAM\nQ8IgxLZtDMt6MNe5y++7eRr32stag0BSb9RJJJLRdYx7f+53wvL6OpXa3V+GXWAOONDzfaK9bQu0\n1r8L/C7AWH5I/yef/pUtvxt9OkmpGK6EUuBBKoGVTVMJ0+3fFBsbGywtLRE3bOKixePHxskYdWxT\noUyLliH43sVzuLYksC0aViTgfN/vXiNwov4120LaMQCtEUIQCjCVJi82RUIQRJNEMxnb0V63R/h3\nhGAmsVOcBD3/q7ag99kUmh1BbAWtHcf2kcuMmNE9rK+vd7dV63VOjR9kSEnyIaRDWKu4AOTz+R3X\n6kVHxvTKmlBGD2h1dZVUKkU8Hu+2vQNTb56r00+9+3Sulc7G0UaCb790A1cXaAVJHGvnjfUbE8id\nE6wfNNsN1xiGwV9+83/pc+BOPAhBvyv0aj0DqQT/7Fc+i23b0Y8y6jjTvPfmdQb2333rJZ5++mnS\n6ehlCY1gx759O/chRBjGKJVKWJbFwYMHCYwHEyzl30UUWuFWrabvQNTGjm13Qr2miMViXLl2nZMn\nTwKgYnduSLiLSVv0aGj/1f+4u5dhF3gVmBZCHCYS8P8A+PU7HaCVptlsbtnWGXe9WqLnaVwJwjYj\n7VqIrgCBSIgopfBCj1zGIRaLETNCLCNkrVrj1toKIyMj1E1oGZKEbey4Rm3bszHZfH66LfCxzZ7f\nI9jeZjustpLh9NO2jZ3joR8EO8dIzNx5Qs93t1wTYF23r5HPdrcNxuMsLS0xUBgiDCEMN4Xu/ciQ\nfgrmlhWEEFg9E6J1B8XL8zwuXL6CEFkEAiFE3/P3G/F+z/MPgoBiscjcfBmtNVIKDMNA7TKY5kEI\n+nvWeg4PDeyZyJVScu7cOT7xiU/s1Sm76H3xWq1IA+lMTo7jAOyY+ffqunNzczz//PPR+R+QoO8M\n2M5kuX0AW3K7oO/Tjm3CpFej7ActNaHWmLaJYUXHKva+D/cCWutACPGPga8QWQh+T2t97gNuFhAJ\n6nQ6jTA0qBBX71Rs+kEJkBqkEHhowj7P9N6m7l1ck/t3Djb6HOi8l8bcI4QQCMXed8pdEIvFuHbt\nGpoQrRVCCIrFYt9VSj88CEF/z1rPnkBHc2Jlo4pj71xq7jWWl5eBnULx8OHDe36tIAgYHh7e8/M+\nDPB1SGljhUPTk4TGwynge6G1fgF44V6O2a6tyfZY7fzdC0gpmZ+fp2ZoSMQhnbh7u2RkX9dEwl4J\n8PqslpJ9jg37iGqL3Wn070VNaX1AmT9CgRJ6T5/ZvWBxcZF4PM7ISCHyy2iN4ziYu1T69lzQ35fW\nI3Rkrtk2O3U06N0sv7wgGmSXr15jenoa0Z7mQ3an2ewGq8vl7v+ZVCE6f/u5e57H8vIy4tosxWKR\nZDJ6PbabjHZjLlJaopForVleXmZpvcrx48dRfWx7t8PtzDB3WmbebR9/N0tzsXUfy9n6TP3WVmGu\npWB1dZWpqSl830f2OL46k2hH0+983427pdm+f8uyIgfnBwipt3/fKegLRoz5Rg0sG1cLhJBYZqSw\n2LbN3OwiiXiaoN4ELWnUWySSgplrN7FTglTCQsQsHAmBgMxqiZZU2PksVVMQak112/gRptVVTH3f\nxwSMcKv9vFQqcXFhmUKhQKvVolgsApCyN/drNBqkUik2lLvj3kW4+fzvNPbcfo/ISgFsmT6cPo7h\nhhlDmR5rwkADntidP+l2kIHR/dv5IEIMLeh6oe6i0XfG6qtXlglVCiUyGCKFYxlYKFR7EHuehxAC\n05RYZtRXrutSKpVwDDDNyIx37NBQ1CbZXiELKC3P0Wru7PN+eCA2+vvRet4rhDSZmZkhlx8gk83D\nHgr4DwpKRUu06enp7sTxYYPlOPhhSLM94IUQ7+kl/XFEGIYsrCzjJhwabUGfTWb2zIx49uxZAGZm\nZrrbShvV7v/1ep1AQSq749Afe9S0BdrA1hYWJnYoCPqsXJvNJjU/MgdXKhUmJibIpxNoHSKEwPM8\nlFKUyxvdYwzDwOr4Ne+CD8wZeyfcjwNFSsnc3BzPPfccQoh7jv64EzoriztpJKZpYpom8XichYUF\npqam3tM1tdZks1muXr3K1MnT932e7Xb3hw21Wo1sNovneSQSW80NnbZ3bPbb+7/fPXX2CT+ks4Vh\nGJimSTKZxDDqHDlyhDcvvIbjOKSKRZYbNapNl+vXr+Ob4C8vYg0NkMnlYJtG39t/qVSKS5cu0fRN\nTpw4QavVolqtYlkWYRgyNDTElStXWFtbo1qt8pGnno6c6FeuUCwWsW0bTXV7c3e1gvwg0fG1dXxs\newXDMFhZWSFo+dimiWUZmFqiDYElLXwVyRTP8yiXy6ACRoaLZDIZxsej1AzTFDQaTSqVCmE7nHOg\nmN9yHbnL1epDKejvB7Ozs5w8eRIpI5PHj7JaqImcPj944w2OHjnyQTfngWJ9fZ3BwUFM09y1Y2kf\nW5HL5VhzG1u2xeNxDEPjq4Dd0JzU63VisRgr6yW+9pWvMDk1hdaaQqHA4OAghmGQSqUol8ucOnWK\nZDJJOp2mVquRSCQIggBjd8rlQ4VOVJ7neQ/k/CrwkVYMIQR+GKBCQcOt0WhFJhetNWNjY2RSCRzb\nxDAMSqUSQgiWSqtAtKrP5/O7eo63w0Mj6FX7Aztt83fSzprNJsvLy0gpSWfj3dDM3WD7eU1r6wbh\naVS7HUEQEHpB17ZmWRYShQ4lWpp4XgXLsqjWSyRSiW471LYQRLNfcPA21BoeXhCi4hbxwRzI2w/C\nrsa+7V429Sivvd+2t/AO5+xC7f2bK+yoZbZts7a2Rr1e59ixY1sGcSDvvPoQOupDs71s1aInDLFt\n0e1tufwRzqHYDYaGhijP3tqyLZ1O0xQhtVoFrfVdhUSlUiEej/OZzzyB67pcvXqV69evk8vlGBsb\nY21tjWw2SzqdZmRkBILIpNAxD/2ocmbNzs4CUR8+CChAI/E8j2Y1EvSGI8nlcgBd3wdoyuUy1Wp1\nM8/BcUink6RSqa4tP1D3NyE9FIJeEwXNaLE7R9v7hZAQgYFqZx5i6ihioJ0soZBoKdCEtFqtthPx\nvdtFpZRUq2XGx8fvy4y1j4cb2ogmu16VpGVV0FYDrwUyWUQHeegXxSIVCIUmQBAgjJDrboNm3CYB\nhKUNhtNphnSdugSZtqi0agw4BcptJ2NHOTBlAtd1qdVqZDIjXLp0icREilhumCM/eZoBHeJJxdue\ngnQe53RkNlgBkAFLLY912yYjDOIKhHgfAh375GkINKYGG4GlNTbQau+menZvhNHqJh6PMzMzw9LS\nEjEjwfj4OK0e72q/u9jNajPs9dBKg5rrkfQDWoGJlDVi6RTxpEPcTCF1JPxr5UWklJTdyPZu2FAY\niJwdcRm1JAiCzeur+1v1PhRSRArxUNrypCNRvsYMJFYo2ZAWkig8rLMC8bTAkkF7697MUloKao0G\nj505gwoCUA/R7LePDyWGh4cpl8soIVCGRGqNbZpRXH7wox/Y0IGUklu3bnVXk7HM3cNQ3wts28Zy\nUhiGZmhojFqjQmOjjFDtbHflE2i9JXw6eAD9/VAIej8IurZa7nEJuLi4SCaToVAo7Hm7tAqRGEgt\nSSTTiNYqIpTYgU3T1YBJqVkjaK4yWBhidX2Z4WKBYrG4OXFtj3PdhdBeXV2lWCx2nWXOQzgJvlf4\nvk+5XOaZZ575oJvyvmALV8o9LvparRZaa2KxGNVGHcvafQSWUgrbcXBdFxKRPbozrl57/fskk0ky\nmQylUomZmRmGsqMMiVHS2TRaCEI0jrFTi5amQKkoDb9cLpMuDGL0xA6H4e5i6rdjSz+1tff7OVfH\nyWoYBrVajUajgbYtZmdnicfjDA8PMzk5yfLcKisrUVaxbducP3+eg0PvPWdFSsnq6irZ7GFCK41p\nwpUrV5AmZJ0MWoJlOWTiOZB6ixm5Kzvurwv74qEQ9CCYWy5RaymmjxwldCt3PaKTst2x8T4IZ0oc\ng1Ba1FVIqVaiESxjaQfZyqBqKQLlEJoNtBRUKhWKQ4MU8jkKhUL0Yt0nNjY2mJo+jrTMHTHY+9jH\nXiGbzZJKpchms0xPTzM2NsbNpsRJJNoZ2MZtYxqCICBm2wwNDbExO8/y8jKF4maior3LsL/3E5VK\npXvPpVIpSnr0I0XswoULDAwMdPME9gqNRoOKt4IQIel0Gi1CHCsGqm0OEm2b9QPOBn8oBL3lxHni\nuZ9gbm6Or3/7+wxkc4xPjBGLmRgCLMNvd0qPxuALrl27xvjoAUK/D8ubdfewm9DTIBRKina23tZj\nmkKCCLGTYOOQyR3r/hZpDC6xqgmMdlcUXhiwVi/d1hSl5c52SbWZEHTlyhWOTh3DsiwMosyPPQmM\n3OZ87Wg66+vrrK2tRRvbztfh4WGKxSLK2jxGaomzLXGp3z26ra33F2/v09GwENE5VldXqVQq9Jp1\ng13eaa/z9XbozbLdnyv749ChQzQaDVZXV3nppZd46qmnyGYL+GjcMMSwTRx6koR64HkehYEMhw8f\nZvKpZ2iulXj5tW90fx8cHHwf72R3qNddUqkUSsGZM2cZGRnBb0RjrtFo8O677xKPx6G5k2DtfpFI\nJHCyRUwTlJIgFdoNkEIiuryjDx4PhaBvui5owcTEBNOTh7n0zlvMzc1x5MiRLo3p7SCEEZEE3cfb\n3Ag3l8BKKLJG8w5790dnQO8lx83o6OgDsdP1olwuU6/XKZfLmwJbRX/n5ubwfZ+RQw8mEuHHDsrs\nTnCwaYroNVPoVgLpCbAl2nIRTgWa95YkFwQBvu/j+z5NEeAqSdXzMeM2Znynhm3ik42bZGMDZLNZ\nVudm2DiySakcUwCSptw5tmN2inK1CdkCV4IQshl++vP/kAsXLjA3N8dG3YjyItTO1bnVL8O6Y6bp\nGfa6u9tmP4ldEqd1+rbVamGaJktLS4S2zUajzs35ObRpoE2jG63WcBtUjQAV1Cla0cokFJufjm1l\nU7m5ezsSiQTSOhi1PmhTPygDt4c4TghBtVqlHNSo1+tdMx2AKQ0MEZGXJZNJBjNZnB7T9nbq5Dvh\noRD0pmVx4dw7lGtVjh0+xJNPPkm9UaNWq3HlymUq6/OMjo4yMFggHo+jtebmzRuMj4+TTCYjoXib\n+aATtdLVKNnsoGVvgKXZOdZWKuSnTvB08Sqwu+SJvSQx62jI5XKZycnJByrkE4kE6+vrzM1FPHNb\nBksPZevKygq+bDE1NdXtu/eSdNXpL9eL+ksp1Y1h3scHA611pB+JKLzwzXfeJn7k1H2fr9RyGTw4\nQW5shLfffpuFjRIHM7sTRjroI4r2OARvrVRicHCQp555hkQiQag1iXbGeaPRuMvRDwYrKytUKhUW\nqiskk0lisVj3fRNag9Z4YYjv+9TWSxw/cOi+rvNQCHrHtjj5yHG0IamsrvHNb32LkdFhJiYm+OhH\nP4r2q9y8eZOFhQXi8ThSSuLJJJbjoNtZsLfT+y9fvgxszbY9cCAi11xY8lle8Tn9sV/gy2/f4Om9\nNc/tHlqgteb8uQv84i/+Ihth+EBYMO8Vy8vL5HK5fYG8x7gXTWw7TNPccbxlWViWhWmam/9jYgpJ\nUA/IJpPUajVI57r7A9imQej7VCs1XNcl9Py+5rheZ2g3W7lnfHa2lVo+SJC2iTNY4PrFZU6OjuG6\nLs1ms2u3721/99x+FP2SSqWYn5/n+vXrJHKaZDLJ2NjYHfvE931kEETZ6ToKteygk0mstSYMw66G\n32g0qFQqHM5FoYxDQ0NRmGO5vCeKVq1WY2BggFIfV12z2SSXy3Hx4sXutXpNXbFYtKKQKgrnFm2K\naiFgYWGBI0eOsLKyQja7e86Jh0LQa62xTIlpmiRGhykODRKGIbNLi9RqNSYPHiU7PEW6eIRKpcLS\n0hIb5VUyxRECJQATU0okmzblql7DDOK8aRa5+rO/RMH8Za4vXcJ652/44mtvcjTpYA4olk88ztcf\nL1Ic2eBrbwgeP5hikDoJyyXwM9vaaQAaFAghI0q7bbA7CVG3ia7x+rgOAhWRl02ffAQzFke6DaSU\n3ZfpfjJGd9AFhJpAB9RaTcr1Gla/5rW3NVrtJCvbwS23yCcGou/O3TUscxuXfNB5j9urgVbbhOFJ\nwfChg/0FyzbiM4w7O9pVn9hqo6f/f4STpB8oFFG0hxKwUasyPDbK3UIafvCDHwCb/De9qBibCtdM\ntUwQs/nud7/L8PDwXaPirp6PVpidKLriwAHqzNzxmHuFbds0GtG7Zds2juN0C5hIKalUKlQqFXKJ\n/F3O9N5gmiY3btzAsqw7Tiqq568iqsbleR43btzoJlzt+pr33doHiM4sPDk5ydLiMtevX8eyLGKx\nGJOTk9GMtrrElauXcRwn4oVJJojFZDfG3RNgac2w4fDSK2+w9pOfojGZoHDgk/ztX1UonX+Ham2N\n1tGjnLMSWIkhatlD2KUFHitK0rK1gxZNKAfa5dvaW/bE0adkVOFnbGKCMNh3He7j/YGvNYHWGLbN\n+sYGg4ODdxX0Tz75JNDfZBn0zKiPnT1LEAQ8n/gM586d4/r163c0iaYSkeA6Pj3QJberPyALZidi\nT2vNwsICEGWoNhqNqEjMgw2txzAMlpeX7x7h02E31QIpDCSCIGhFEU73GE7+UAp6iB6G7/sUCgUG\nClGHVKtV3nrrLTKZDOlMklOnTqGUYnFxkaXlJWxTMTExgdSahoQMgkcTWZY9iy+vfJdWcYjZzAgj\nn/1VpjMJ/uYb/w+TKQeZSKCmpjHzSV79yz+imMxwMAh3PPB0PcA3oeJotLawtbFr59CdUEilWV9e\nIR6PU2vV+xf0uAvuRl5mGJHTWkp524ig7dqF1nrPWDM71zSsGOvr67iuSz6fx+9XK3QPruO3lxKm\naW7xz7zfCDWUQ01vAaWCv/P5NnGoeh6x3AA6iGF7DuUde90G2gBt0Ki3kMIiEU+DW7/rYdUwjPwy\nMZsbc3MMTB7sO35i5qaAFkogpCbUKhKYUpNJxKjX6yS2LJ0Util5JZC0RidZW6lRr/qMZHLEW5sO\nWltaLC0tgWsSd9LgxhFhHJRFbiCBEUgSalNMuX3eN8uyEG2akiDQBBoaNY90Oo1b9wEfy0oSq0f3\ntnpjnqNHj+J5HknhEEjB0uwSG6US+YEBlpeXyefztFot0uk0sVgMv9nuT3Fv7+Z2psowDDl3bQaZ\nTLDWqGO2ieZEP+eu0S7S0s7F8QEjZhOL2dxYXmRoaAi1y+XqQyroe7RaEZVjg2jWPXDgAOvr6yws\nzrFeWmNgYIADBw4wfXiSSmWV+dlZtBC0RiJffcGHEwE8r1e5oWPMBAcp+Unkpz5FJltnNpYgobM0\nfIPlTBJx8pOUFq4T+goSWw1sb6kMTthiQIFE0RKwFyVOvvfDNzl96hE0CkNH1Ar72Btcu3btA/V3\nKCGoGhLL3DQvBX2SAqWGqgGOjLLc7c7S9CGDUgqB7po5NCFzc3NkMhkSuZ02Y9d1abVt9M2NKjEF\nmczm+F5ZWSEWizE8ZLGxXsWxrE5Zc5LS4tDBQ1tyZNx7zB0UIgpg7B0D5XKZcrmM53nkioO0tMIy\nTYTWZDIZatW7T5L3gyAIuHXr1t13fAB4OAX9NlKrdDyD67pce/cKuVwOrTUHJg5Rr9epVCrcuHGO\n0dFBBnJ5nnvmk2jf5/tvvcq5W28zkhpnIJPn669O45wucub0CJe8Zf4iGGXk+X/EzPkbjKg0yg5Y\nNZIcP/OzvDn3VeZv3uS3Exe2tOMYDVCKVBlqusSGyHBLOWRtSdxQjB4c5+atK0zmM6woH+21iLUg\nbga42sQxQt60BE1Dk5A25bqHXWoyODREOpFGCkE87rDuR7N7Z6kb+Fs1UtPauQTu9pjtbP3eRide\nt9Vqkc1muzS06+vrm74AYaECSSIVp7JR5ZlnoggMEeu8eneHCLcNqW32dYVFuVZlZGKchtfqu7ow\nthUrqXtbQwPtbcVNvB7iOK/t3DM7kUxra5jm/Ts/3yuU0Li2RvUUWa20BVevUzJr2TiJAWJDg9Ql\nVITqW9mpVquROrLVOdkJqQzDMCLf63Ge1ut18kph2jv7ubfvU6kUiUSCihA4jsPly5fJZrMUCgVU\nz/mUUty4eY1arRqFNQvVZso0+gp6y7JIFgpMfPzjNJdWePeHb9EwBYVCgfn5eQBOnjzJ6WSWyxdv\nUFvXzN5YwzaSPH32aXzfZ2FhgTCMSNSI7+yTRqOBdF3oY7Y22klfhmF0nZyxWKwbdbZUWsdDYxoG\nfqvF0soKp+4zsqUXqVSKxcXFXnZBXNdFKYVp7k0yWaVS2TWZ3MMp6Leh0WiwtrbG6upqN7knX3WZ\nnJzEcRxGxsbYqNY4d22G7799gWKxSEEM8oknf5H1Upnl6jxG4xLuLcHi8DjakWBrZutNCofHaGkP\nGYBpQMswSZ+Y5sLKAv/DG+e3tOOg0CQDl1jK4eTRo7zbEvybNxsMOR4HBuOk1hcoxFKcaSwxYDSI\nWXFqdZvxvI0KTWQYkpIm2RA822DAB2E5jA6NIkyBI/QOtssHhWKxSDwexzTNKCIDqNeaCCGYuXmL\n55577oFcNypsLLv/f9hh2Db5Awe3hO8NjEwAW6lxY2ECLcHt+byfpWZqtSicuRbEo1C+dp2ADjo2\n7bfffpvRsWGOHDmMUgpp0A1xbvap/tSLsbExksKgMnOejY0N8vl81xka1td49vHj/Lvf+zPMMMHp\nR05STEdtKS2EqG7gw+5d61KDUBrDkBhCdCPvNjY2i3c46RQemtmlJSbGxpienobmg6Es/iBxV0Ev\nhPg94GeBZa31qfa2AvB/A5PADeBXtNYlEZU3/5fA54EG8Fta69ffayPX1tZYW1sjk9mMgrlx4wYb\nGxtMTk4yUCwymstB3OY7Ny7z2tJ1ROwIzWoVv6W4Mb+B71yCpM3C7FHSh48QyoiZUhOCAKUFho5e\nsPTUJMeOHkCpR7e0Y1D4iFYFsVTmn//5CxQe/yiP/epJbtx6h8yzZ0gODPLCX/0NX/3eFX712CRJ\nAxbKBuPLs5gDSR4fP8BSaYFxO8a0naOcTFNy1zHNJI6pMUSLlg55kJWHe7W4QqFAoVDoOqQWwmVC\nX/DzP//zkTC+S7TL/SAIAkqlEmNjY5GG1oM7ZdzeK0zTZHl5mUwmg/oASeGUktRcG9tJdbdtBFGB\njkSqxwlUj0JWPBS+eP8Lp7iui+u6NFSDMAy3TEwdmmOtNY8++iimJfG8VrTiFArDMNjY2MCI39mQ\nWalEVN62bbO0tMShQ4e6gj6TNAmaVX7h5z9HrRwyMXqYprNCs9kkm06xsbFxT9FnppDdspRaRoW0\nvfbKtV7fNM3UvBaWaTI9PU0mlYrG3o+joAd+H/hXwB/0bPsd4Gta638hhPid9vf/BvgcMN3+PAv8\nm/bf9wytNWi6wqE4NEDo+7z51hsIIfjoidO8+NarLB0d4/R/+SW+XjrMzWoKB4NCxuGwbrGCQc1K\nRQ46bJTXRGnRNZGYWtMQggsxgaUNmv6pbW1oYiUVmXgT65kM0x97lnlhMnbqBLNK8e43v0/h8LM8\n+/n/gNlqlcAMmRgq8u5rf8oLX/lLUm+/zMCxAxwNPX7ONzmw4VFLDpAJs6TDOnXL/0C03IGBKHxy\ncGAIHRpI4/4yjXcDKeUOAf9hRqgFtcDeYvcKwqi/S+VNu/H2F9EmogNWQKvlsVKXZM04yZhFrbKO\nmRvAkgqDMKrTu/3TOW877l70o7vuWT2OjBWp1EqsL7fIDRRICQOj0cTOQ7UjX4XAsGwUkMs7SCnx\nfZ9Wq0UynabR9HY8W4d2yGUyzroKaLg1xk6cRZpXeevqLI35EtPDLUoTeQZSaQ7mTZwstOQ6OgGe\n8skNxqk0VjBME6PPffRzZUghkEJgts1j2eTmRFtM94RNG5sJfEIICDyEE01YJR3VeDY0hKJduaz9\nHPuVlZA6ihZSWlIpV0nGMzR6nnvHXBQmd6fIKX/nCinWUyXMDQPUXplutNbfFkJMbtv8BeBT7f//\nLfBNIkH/BeAPdCStvi+EyAkhRrXWC3e6hlIaJSwCLZEoDB0J3kQiTqlUYn11ndDfjKIQQuCYPpiQ\niEcP7Y2LP2Q0nURXG7zxv/+fBI//BuODk6yLJC0tuGi0H7QKaXlbbeAduEKAGSVVRG7Y7QIpjq+h\nMZKEkZ8COBwNAAAgAElEQVTg+4DhOEgNyzdvwtQJ6hOjfNMPIJOCtTLuX/8No0dO8+x/8TOYCM6v\nXWdBCP7pa2/AzBVy46PMr60zslxBzs0ymEry333sGYLmPD4eOd+EPjb57fD6xPT34k4h8DsJqDox\n77s/x+3Q0lvP7bXfFMdxokIKPdfoFCW52yTjbYub70f85huK/OgIzYWFu9JoPEi0mk3efffdLduC\nMOqT3vHX70XsxE9LKanVakgpeVAR3qlUilQqxXh+lGwhT8K5s3b+6quvdiPjlFL4YcgzH/lo1G6l\ntmjfWgiCICCVTJJLp2lVa2TGRkin01xruFxdWuDEwTwJCVXac2IfTqgHAdle7YmeonQPoQ/8PeN+\nbfTDPcJ7Eejweo4DvW7l2fa2Owr6lufx8ssvc/z4cUwJmXQS0zRpNpusLq3sKvU+k8uRCTWjgWB+\nboEvX/6XeCce57nP/ypXhtKsrz0Yi2dIFO6aHI54YeJmCqSm6bvUah7i8EnC4THe9TVaCEoNh7Xr\nM3D6Yxz44m9iNGsMCc1gMsRZn6Vy9TJ/8PpLfPqxNAMYOFphfYiicB4mjf79MEtKKUkkElsyszuC\nvhd3EvRKKfL5dtGPhRUeOdo/U1QpheM4kbnjHrs4DEPm5+fJTx3EcRxs26a0tsag1hg96qthGFSr\n1YiJUWvy+Ty5XA4FhG3tcnFxsbtvOp2O6sm2f2sCgWXgFHIkczkeMUwuv/UOb12/yrNnHkd6LWKh\nRmhFJpOi1WoxMDDAjRs3btt2y7KQ7czgTmZsGIa7ojfuCPXeItvKuz9R37me0ps+qF7Z9UEWEXrP\nEqStvd+zrieE+JIQ4jUhxGteEHLmzBmCIODSlcssLixhGEaX73p2dpalpSUGBgYwDKM7kLa0w5Zo\ny8SOOxyZnOQ/Lk7zuXXBzT//Oubr17fs6zhO3+SNVqt1zzHXnQ6MxePE2jw8WoBp2Di5PPnhIvGE\njSkVcUugsUh88pNkB0fx6x6LNVDVgBsLHjPxYa5PneLt0YOEa6V2Fp+6r3Y9bOiSbTWb7wuzYYcK\nYHR09E42/98HPrttW8csOQ18rf0dtpolv0RklvyxxfT0NMeOHduSuCPaBFzHjh1jbGwMwzB48803\nWVxainI4iJKqXAn19mfw0AEe/8TH8GM2f/aVv+bVi+d59eJ5fnjhPJcuXWJlZeWDu8n3gIct0OB+\np5iljklGCDEKLLe3zwEHevabaG/bAa317wK/CzA+kNfxeJx8Pk9xIM/i/DzvvPMOdpvv+rOf/SzL\ny8ucP3+eRCLBsWPHqNRWt5zPURIlBIHSaKGJC8Fo3edbKzPMrtwi+Z999D5v9c7YQeIqVDvJAZKF\nDAm3hV9rgWVTrtSIHRwmHwb40iWJi5EwsGs+VlMRNKscKOYRyRzly3WscQeN1d8g+COMh0Wjfz/M\nkmboM1Sa35J41olOqVY2E4f6rVrryZ3KyGg+hWjWiUkLhxBTB6Q9AzcwWA09lhpNcukMjhdSE1CR\nDpYvoxXB9kv01NkLffBbilB7CAIMCxpeHVMqDEQ36oZQkU4kWQ+9tj1aEaqQWCzGtEzQQuOWKqSF\nYHhgGP3WJYYvz3PMyTOQzxMoxXgQUWNvbGxEvC/A2OBBbmQ9hgdGsRJx4ukUMVknDYSmSTnwGMxl\niPstNkyBaGvugYDxbI7FpVW05/fwBez0V/QrQ9gxMW3V/kX3mSTbPEG74dfvJCUqHa1am80mGatC\nxcsipcI0LLQIMYKd7XD75ST3eU1EsKnwmaa56xik+5UgfwH8JvAv2n//fc/2fyyE+GMiJ+zG3V4E\niNgrv/vd76K15pETxxibmKDlRZTBSwsLLM7cYnx8nF//9V/n29/+NpcvX2Z4dKu10tWKUIOQJiBw\nV8qs1Uy+8LGf4tKTh3jpPm/0bugdHhEBkUS2a99qAS0zwBKSjCVYvXKR8Op55kSIPWCzvnKToSee\nYJRRjsaK6PoCn/Bb/LO5df70++/w21/8NHUsYh8iRvVarUY6lUUp9Z7IvR4g9tQsmUgmeeIjz24R\nFJ7eyWHUr3DOoh+9A73RZmatTiFhAHdO6nFdF/ce1utKKVKpVJe2ujcEUbJToXHU5kI+k8vTaDSY\nXVnEF5Hz0teKuoaT08dwl1Zo1GqU1tZYXl3l0ZTqJjp2xsDqfBnf97l27Rp2MkE8ncKJRX1SqVRY\nr9dQlkmQcBBadv0yD4vS8LBjN+GVf0Sk4QwKIWaB/55IwP+JEOI/Am4Cv9Le/QUiG+YVIjvmb++m\nEYaUPP34WbTW1Go1XvrOSxiWxZPPPM2xk4/RbDYplUr8xd9+nVQqxUc+/ZMgFDMzM6wsLkWp+r7L\nhrR4df4ch376c/zZr36cMmPoms2pRJ4wHiKDkJqKYyofcDDaPNsKCIlI1VY8F159HVohYmgQ0zQZ\nPHyYStPFAOJtzUwTaRO6XaSgS1vc1ugFGkMKTMtBYFLWASNPPMXff3qK+Ve/xW98bJrp8FMMZDQq\n1mx3VxSN8dljP434Dz/L6+fe4k/+5E944vRJUrkccR9ylsC8D8F/P47V+3G+7jhH29zZoTSfm13g\nqafG7yjkg7u8u047oaqjBSux0xbb9Da33e9taK21EPfOlSuE+BKReQdDOvz+n355S2Zmy48c0r7v\nd23E/cpFBlZ0n4nEZhhmKgj5xDNnePTonWsF1Go1ah0JvQuEYcjg4CC3lla7LI69k9N2U8RguPn8\nKjcXmLlxg0IQcUyZGsx4DImgrhW3bl7n1q2bHDlyhI999FmmnYBWq4XneaRSUZDE6MABMgMF/vyF\nv+oKensguka9XqdwcIJUKkWtutGuP9FuT6j2wAD94cduom5+7TY/fabPvhr4R/faCNEuDh6Lxcjl\nchw6dIhypcIPf/hDqtUqk5OTHD9+nGPHjrGxsUG5XGZ+bgHbtpk+9ggSeOH8GyxVV+H4ES6667Re\n/v84OPU8N5sZ3p06hXXzKk4uixKjmMpGG4oNWSclHaxQgpbY0sJZnaPluqTPnOVQKsvc8iILr/8w\nCm0fGSGeSqHCsCvojW0aRehHWkiAJiFNkJJARffoS8GNb3+bj02PkdqoM5jU2MLA3fYYGskSBA4H\nDx7gt3/rN3nxL1/gkJMmETcjCtZ9JeZBYk/Nkpad0b7jbOEREokovTPRxznXG7/eJQPoOdZuZz4H\nQUAgA3rjNpPJJFkhKJVKnMhmqdcqPProozRkux6DjCaMzgTp98SXVKtVpqamGG4TPOXzeZrNZuQr\nY5OyWghBPB7HvzyD53m4rksikWAqkeWRRJbpR07SqtXxtCJtO5R9l5uFQW5evsIzj52mkC9gtFZJ\nJBIkEonuvb344ouMT0YZqZZlkU6nWWwXLbEyKco6pFzdIJQaoTWhCvHbk2cod+d4vVc4joNSkY/s\nfksjGoYROYvbms79FknqhygCcZf77s0l3xsEdGl5lVKEYYjjODz55JMsL0fslbOzsxw8eJATJ06Q\nSCSYPjbF2vo6G5UyBoInDh0hOzHGi++eY+7iu/xSM+DG19/FcIrMf6uAc3SUsdNncDNpSmEcKxbD\nEjoqS6cMZAh1LQjmFzAfOUEhn8eoNym9fR5jfIT08aPEnDhBGBL4fvSs4k6XjnizVJ6FrUFLSagE\nyndRysRyBIuLC5w5eJwnJ4tMygrZpKZuKLY/+ZhIYjgWmcE0+UyKT//UZ/jy//unPHPqEbJOsu9D\n28tkowcBKSWu63LgwIEH8lLuIfbULBloxYrf2PJcfC8S5kL3oSVIbAqUIScSur1mlDthbGwMu14n\n0XQZMTSqdu80jFNTU93/FxYWqFarVEJNfWMDqRTlchnXdflPpx7Ftm3i8XjX/zBQqrMxs8hL3/gG\ntUaDjz/zLONThyGepdbUGEtlRnLD1Ppcd2JiguGRkS3b6u3FlNWzqJLaxCLiVlZqnxVqt3goBD0Q\ncbu3Y8F1OzzJMAwmJiY4ePAgnuexvLzMK6+8AkR2y9HRUbKZDISKiUCw8O5NPlKDn3n6kxwONYGS\nfO/lt1ibucl6ZZ7axYucP7SA8/d+DkyXsZZFGQWYaAy07xIODTJ06Ch6rcSFt97GHChw4NhxGpaN\n9jwsKfHcJi3fJxOPEWwT0oaApTffxhgdJj1UwBCaQIClFGjNqewIR6XBuG2gTBcjsLYkrgDEE0lU\nGBB4TQzHZDSbIG0IhNfE0pld1Uzdx93xfpglTdOhUDi6ZVvYjz+/j/nJlQopNLGBVFfY15s1MoU8\nPppAaARwPDuA2qhiV11Wl1aoriwznx2lKm02qlVcCYEUvNuIFiAdm3/W2nQQz19f5NGpgHBgczzn\nipHgPZPO8MOFBQ62FMITPHZkiseGDSIPVQ1TRL6EIBOQz8AXfuPT3YxXV5RpNZfIjycIzCpVf5k1\nzyfZZoGMp9JUy2XKoyMkMxnCZJpyuUHJm+cHs9dIZjLdKC0NXbbG3lDFZFgmpyV5aZFTmhSwZhi7\n8gH1pVvuZEWJEGlo4gkbpbd6sg12TtIao2tR0lpjWRYN39+xAhfmzmdt7rJ4m+hJmGqFAbsN7nk4\nBL2gnbEQtdowOyQAAYTRElXaMDKRZWA40lJK6w0unL+IFgGPPvIYq9k4VnaKI2HAxWtXma9WGRgY\n49jzp4iZMRLKwhMVnvY9vvHlP2LquU/x5xMjNJsBnu8Rt2NYGsbGD+Kvr5M0bUQqwdlHH2OxsoFp\nCCwhWb41R6O0xuiTTyCkiSUVSkQxxCGKR22LV1tVMhuCg0mD5bm3mDgyTGp4kIs3rpA98FlKbonx\nuKCBQBk7B1qHRMq0HYKWh07F+JlPPM8rr/+AYjKJEpob164gBcwvLjCQL/DkU0+3+0/R7+nrHbrP\nHqSF9IkH346gvbIxbJuFuUUmp7YKPbPPQL2bjX6v8H6YJd8PCCHI5/Ocv3mTJpFNv4UmAFL5HJYh\naKGZGovovjuO305hbIDJ6Sn0bcjflucXWJydY3BMcnxklEz87iuFjpZfMBI0Gh7ri6ucPHGKghnD\nclvE2lE8qlwjriTLiRRXzl/g1sI86UQSKxbnsccfJ5VKdc1ZtxP0srTWzTPYR388HIL+PhCPx3ns\nsccQhuLWzBz1ep3RoWEsy+LkocNYtsHqconl5WWarsdgvMjQSIykEZDQPraU5AKfaw0Xv6IZLQ7h\nK40yTQJDsiEUOpVgNfQIbROCkJVLV2lUNsh9/GkCNGHoIZTAQOEJSUZ6xG68yROld/j8yedZLb3K\nY2dO8o23XsQtSVLnKxx/4jME5TIVGdEc67ZW1gvfC9piWRNqGB4oUhtYY31pnXD8ANfmZhguDoIh\nGJsYZ31xiZdf+R5nzpwhk07jt1ro/WiEHxsYhkGxWORYJs5StcpqtcKGq6lL8LxmpNELkLHodW82\nIw08N7qZeHXp0iVGONK35kY2k2KoWKCQzTI6NEzKVESpT7dHhxBtbcOnYVuoTJp1FRL6Hs14DFcp\nDCGouy6GFHzv29+htLzEgeERlB8wMzNLKx3rsmrCVkHfawqTUkZFPFoPtUnwA8WPnKDvPGDTsCNK\nXBly+PDhrtMkDENmZmaIxS0KuSEOHZ6gUW9SX/dZL8+zEYZoz6a6XuFYPsaSCiivV4ins9QBP+Gg\n4g4tDQOHJymjcew4DoJ6q84jn3qeFd8DrfAlWEKyurpCKlMgsTpH8sZ1fueLP8OIo7HTZwmly9M/\n/RNUQp/XzGu88J3f57nHH2PJDTnkRGGGZlusdxxTVkziNhV+00XVA5o1eO2VS7i+zVtX5xgq5khm\nBhgdHeXFv/5bxorDSFyuX53j6NEjWLbZv5BBn36E91b0e7cIw5D19XUmOXr3ne+C96O9Dxs6Mdqd\ncGvTNDENExO69VANw8B1XbLZLI2chW0InHQS0TYf2u3Vk+u65HI5hh892T3/0PFpbt26RXD1apcV\ntuNsvbqyQqAUTd/HSTjIbWaMzrh1XZdqtUqz2SQMQ8rlMt+4cJVKpcLRo0f51h//OzzPwxgpEuiI\nWyaXzlCp10i0bKTWOPE4WJqDhRRlAlzX7XIx9Qr6Xsi1VntMbK5aG43G+5KYdzv4vk8QBEhT4ns+\nUqqon6SCPpTRu0WvY/5eMm1/5AT97aCJ4vFN02TywEFm5m9GCVYzDoMDQxSSBZLpDKtejtLKEnG/\nRsIeIaWzNKSPqQ20it4iqaMho4UglIJQQ7PpQsujEnhYCOoisuwrASOjoywvrZFcL/OzR44xaUAh\n7hMEHiVLk1IGSQSf++hZ/vAP/5B3LvsMnTiOGebQWtJ2SXSzAN8ub/Ctl95mfaNMQiWI50YJmw7v\nkmPt3E3+/pmTpAcSvP7aBXw3IGgFrK9UaTVgYLBBtpjDuYug38eHG042gydhg5CWiGz0dtiOe89k\nOHHiBAs91jwZsxk+fIgbF2a4dOkShw4dIh6PooNyuRwt1+VrX/0qU/lBnGImYivbhsuXL5NOp4nH\n4yQSCQzDwBks8fiZx1hcXCQ5MsSZqSlSj0wTyCgJq1oqc/n6NZZfuYzwmownUxhCoR4sieuPHR4K\nQa+Uwvf9rXa3nmSSfqRVgfRAbiaZGGwdF4cPH+bw4SjZolQqsbI8T9BOCvnlHDxemOe/rk9jY5Cw\nJEvry6QmhhGhYj1mEwiN0gKLdrKdbZF+5DGUZdMSikRosqGXmBQS79Y8jwSKf/7JMU5nXKBJJ07C\nhrYzRmK4LX7rF3+ZP/k//oBTuQPoVoaJqVEu1S/SXHf5v974Pm8uB3if+CILz58hH8/hCFisazL5\nFIFS5GobfPtf/U+8+uY3eKSYJpOCRrPJ+NEp5ubmqDUD0r7EN+1u1TOtNWqbgUj4OxN0tsfa3w13\np1qDUEUv9OrqKhMHD3SJy+7FnRzb9vybfRyXDy2kD/F1hJ9BezEIbapWQNJwidEgF/OJGyGWHzkv\nezNoq5bNlUs3OTBynHhTU6u0MC1zh5Nx1a+RGBhidb1KM25RrlVIra1jmoKBbBrXEPho3CYsNWoc\nf+oJVnWAu1Yhm81SLBbZ2NjAiic4+PFnefHFFymvWsRHRxkq5si4IUJr9DNP8udv/4A4kifHhzh1\ndJpcm2RwYWmJ71YMTkweJWbb3Lpxk1cuXME5PEE1liZ+cpiFmzeRmUG8Zg9rip1GHD/D9LHTXH77\nHV5+8wKJUPPkI6fwasu4fpWw2erhSIqefW9c/7rXpOC3iFkxHEMgUaANWs2AdOq9zRZKKVzX3VFS\ns9+qssNx04s1Px0FmWjwO3/Vzv2CXY5pe5fO1+14KAS9IBLmvUUp9gpHjhxhfX2derVKOpulVqvx\nd3/3d9xamMf57S+QtWMwprj2+qsU/CaJEycQWiP6BKunR4uEhgIlMLTFhJlgaHWedGOZ//bZCY6m\n12nqPiVwemDJgKeefIb/+X/7X/nDv/o+P//Ff8ipzx/nxtI82Y88ydyIzZwzgZuIs9gKSWsT6QSs\nt0LSrmDeyPLpf/JPkRdeY+mbf830aJyFW7NszM+xuLjI6OgorpvGsCJWSsOUEXvjB1hO78cbAtGZ\ncYXeEmHleR7jRyd49uyjFJPR8+kVKCUh+coLX2dl/s5ZsAIjYnldX2e9VqPsNkm1aXlXVla2CPrl\nepXj7eNs22Z2dpbXXnuNyclJhoeHWVtb4+zZs1y7epWvv/giVjaLWqugggAnHicej2Mj+JvKOudX\nVjl7/Di+7xNPJYnFYty8eZPS2hqh55NJpQh6qH47n37Cyvd9jh8/jlGq47V5noBuuHUHYVvQ925z\nlO6e12p/9rEVD4Wgr9XrfOs7f8djZ86QSCSI2XaX8U5KuRuW3ttidTXixOlUwYnFYnzyk59kdnGB\nv7h0EXn0GK4wOPyR57n+g1dxGgcgm0YrvYPe1vO8iDvDtil7DVbfeJ0nXJ9f//hJDsVvkbASd61Z\noIXF4x85zak3z8Jfvc5f/Nm/5bXib/DpX/gC308Os2AN0RIOaI00QKkQlInQCs+BGJrzTZczx47S\nfD3J0MQQTtzg5o1bPProo0gpKZVKXJ+5zODgIKYZ2XZzuXy3HwAwNnXq7uT6HmyHd7zndqiZ/jH0\nD9u2TTaboboW5VagTTqkM+l0usvS6ttR55w7d657rM4X2uXv7izowzBkeXUV1S4C0ut/KRaLWwS9\nSm4qImNjY+RyOYrFIq+99hrJZJLR0VEqlQqFQoH4E0+QzeWQGOTzeSzHptFsYiqNKQxUq8nLN2e4\nPnOddCpLpuFx4rFTPPfcczQaDd65eBEvhHQI8RAy7U8fmnWaQuA2Gpw+fZrrb71DrVpDOD3ZzVpH\nxGjtyLx4z30YnosbBrhGSFMJzH2lZgceCkFvmSbZZIKXv/sdkskkJx89xdjYGIlEohshsJfoVMsJ\nKyu0jKMRT07GJnX2FAtf+SqD/+AX2BkLAz4aU2sMBL7XJNGq85HCQc6agmK8Hdp4FwQbmortsJY4\nTuLn/gneSJKBn/oorwQ2ZX8UP3BIo0EZmAJMLVFAXOso1cCUxEZz3Lp5kdn5G5yQq6R0lA3pOA5n\nz55FoBgcyjM4OMildy+ilOLq1avAJvf8U6ePd9v0sDHtfZgQCfos9VIVLQwQBh1B36mDmkgksKyA\nWq22hdemKiWxWBR5srqwSDKZxVD1tiDfnKj9IKITkHGTeCKGkYiTxKDq1og7DsoQSDRum65jdnaW\nI6dPUS6XgaiG6tmzZ1laWupGuAwMDm7y76TTNDSowEOZEkNpTKUICMgdHOWpqUMIwJpZRgJXrlyh\nVCrRdF2WVlYox+M4jsPi4iJTw6PIpoeUcgtldQNFLBajvlpBSkmr1cIyBZlMhsXFRRKJBJlMhpYf\nVYpwXbd7/4dicWQQYpgaQ4FsKxb3mzxo2zblchnTNLHafr/doPd63dq9DzCj60cuM1YKGMqmGB+M\ntM75S5eZv3SZ8fFxRkdHyR84TL1ep1wudz3pa82oHFu3c7eVvbO2G3ZDu2vDtyyLE1PTjP7wr3GP\np/APPc6C65PIJxj47EdZ/eY3GD/9FBnHpCYkvhOL2PukQiNo1ltYS5f5z88c49hQngG7xTXhkFIW\nyq5ghmlQJgiN8BWhGRJ4YHrgVcq0zDInDo/w93yfv7zVYsPKUzMdWkLjmD4tDbZQSCVRQiG1xEcQ\nD23qVp3UhXf47r//M46liyy2EjRuzrI8epJXFht87avnyJpQ3agwlEhgGQLPMogdfZyGbVEoFLBs\nk5dff4GVH77Dl774S9xcXWK5vsFPH3kEkU4Stryu8O9o+6ZpdqvwdAb+DuJkobq5EN1ub3+9tTDP\ns88+ixvce8RM0/xRLu0mNjNgZVs4PwiFU2jS6TRSaAJpwEaUfxopNaDRFItFVCMKwaxUKiRzm1px\noVDYwfmeTqcBWJSb+Q4KMA1BaEgMKw0otGkT+gFupcLCwgLNZhMFZBNJzkwdw3XdiJ768FHOvfIa\ny6bm/2fvzYPkuq4zz9+9b8s9syqz9ipUASgUdoAAuC8iKYlaKGuzLVu2LNuSl+4Jzx8TMxHTHdOe\niBlHdI+jJ8YOhyPGPdb0OEbtvS2NLFmiVpOiuICACIIEQOxAofaqrC33zLfcO3+8zEQVUCKLIClA\nkk9EohIvX2a+fO/dc8895zvft337dgYGBnBbue5UuGwfGhpi+twF6vU6nb3dHDp0FydOnGB5eRnH\ncUimw4lobQDoei6eCCGkvgDvZ3Dl+GZ2Rzj6G60Fp6o31XlOnDpLPB5fz32dfBv5nKZ9ZKCTfzz2\nIh2RUazOFMueSS2aIrllmML4ZUR/P7qJB9ZaowOJITWZapnswgwffHCEhK6w4FQR0sMXFropJyZF\n2KKdyXYwMXmNWi3g6NGjxJIpTrx+kmu6gyuig0OPvo9xW1K3oSY0tjJAaJQ2UcIA7ZGs+9RMzVAq\nwdH/72ucvvASu3p7KeRnWB4bZfC9j5EyLSK2Tb1SJJOM4noNHK2IRmw8qVlVIX+radmYhmZvfRfL\nvqYn20m8I82QAcuXJ1ldmKNaLKGUItrMyUaj0XVQtVYU9i8rgTc3FUCtrEJtYjMAGnQYYal+Op8n\nVY7T4wn6HIuEGScQ15WdtDNCPB6loc7QMBQYVXqiIW1uZo0+qysUImKwUi2wWKtQrFZIL8xRMcFX\ny8RzOTo7Mkx7ZZIOlJdLVM+eJn13N9FotN2UtGt4OwvLq/T09GCaZrsXI7dB8bAsPSpBQFxIOgNF\neXGJQn4JAUQJHTbA3LWJ9ntG9+xhS3fPdUe8WuGVV14Jf0Nz9VBIpehLp9l5cICphRnOn77E1QsT\nRCIR5ibzTHQ6+IvL3L19jEwAUQUzMsDXkJQGKHCFpBZUMWMGak0XqnyLNXzf99swyRv1KzZbS7TW\nZAaiZjjhb5Sj2HRt8hZxCHeko197Uh3HwY5fZ7GbmAhvnN7RLQAMDzeJkJopiXbX3ya4X4aSKfaU\nNM+dOkNy5zYOHjzAqaUljFyOoquYnphkcF8aT+hm4TwAJPFqnYfsOFm3hpRGKIHoOyg0SoYFJENp\noo7DseMv8YOnf8ChI/fw3g88wcTqNPd/9Ak+9x++wKnpFR78QCd1ExIGUKuSchKIwMUtFBjtzlEt\nFJg8+Qq20qyaDg+MdHHXQ79CYWUVy5REoxGCIKBDhGh8K5FBSTAjNgpFRSoC7WObkmgAdkUTUwbJ\ndJpzS4u8eOxFUv0DFHyfR4eGGUrE8GrhrWiaJrZtUy6XuXTpEvl8Hq013d3dSCkZGRlpXyPDMHC9\n+k10u24ziI1Go1QqFaRza+RQP7mmwfDCxw0WjUZpNBpMT0/zXGmGjo4Odu3a1X7dDMxbTj+Mjo5S\nNjTTleJNr/X395PP5ykWi3heqFNcqVQoFotM5GdIpRNYjoNlWQixMWolqsBGYvmKkz98maiEI/v3\nXz/25qqvK51pb9uI4+jhhx8GoFavIITAtu1Qh9bz2JbYxtT0NE888QTJZJJUKsWJch7bDxg/dQZP\nNe1B9LkAACAASURBVAuvb53S52fO7khHf6PJNWvd7lwY1U9NTQHXo8tMNrzareXmZiwhDXZ1aBZq\nJ1i6dJWJUgH6BnDTndilGNbKCpYGTwUhu2XUwdESw7JJWBECIfC0T0xqPKmwRBASmTXhonPLeX7w\n0lF+/Xc+j0bhNwS1KxlePF3GiT/M+z+9j2fPnCW+Z4yYNOmo+ywd+z5BrcLKzGUKboXH7r+P9w/n\nEJZNjQAhNW6jTiIexdRgBSqchITC02Boo52+VYZGCwUKHCExJcStUAyjOlmkI9bBXXffSzlokPZ9\nlpaWKObnUW44+B3HwTRNHMfhwIED4WcqFeaDpeTcuXNtgYV6vY5lN4XFgYGBAZRS5Lo3lr37mTGh\nEVYdYa2J45o+P5vNEovF8DwP2ZGmY2QLV5evC+qMj89x7dq1W/raUqlEJZRmuMmy2Sxzc3M0mnnu\nVqNVrVajVKlQqlSwXJfOzk60DhAbANoNDTJQFCan6U+m6U93rJvkWxBQb4Nta63VO9Ka0KQwqVUb\nuL5Prr8b07K4ePkyiViMRCJB37YBXnz+Bdx6nRbPZ0/sXzz9m9lPhKNfa61IYXBwELh+o5hOmO55\nS44+ItgVdegyBWfnVnh68nkimXuYT1lQb4AfgPZRSiIQBFogm+mKSrWI26gStSO4ykB7Jp6hkU08\nrLRMZmZn+eVf+wynLlxgbOc2HCdBsfoK3/7nKfSee9HRCK4vccplqsLEnZ9j8YfH6Eqn+eR9d9Hf\nlcCr1nCEi9/wMB0DT0MUiWq2CHoCMMAKQrUfpTVWIEALlNbYjk1xpUyuK0u+uAJSc+7cCQbrNe47\nfA/VapV4Kkoi4mA0oBF4ZLt7MAyDfD7fRi3NzMyEyJlmRB+Lxdi7dy+GYdBoNEK8cb1CvcniOT8/\nj+d55JfCNEWIHvnZs0C5RJKKbbleHMchGo1i6Q66urpoNBrtoqRbnuC5V0+0AxgAoxpy03ieh+u6\nIa3AG+T3W52p2e4unEoJ3wS/WiIIgmZHZbiaWlxcpKenh3PXrpGfm+Oh97wHaZrEYjEefvjhEOHy\nIzIJre7zWnGZyQuX6FCCfVtHcNwGyri++mg5fWuNc2+N3bXoq7XF59ZvNSyLaFP8RAPbRkaoVquU\nSiVe/cd/Ysf+faR6umnIMJOxcv40s1PTDG7ZShCEFPXvhL3VYuydbHfkLzCa7IytEyzVmnSADp+L\nYjifd9nhHVmdD4uzZyeXgPAG6B8aZHBwkFKpBLjtlJBo5s+DmCCifIY8A6c3gTt+CffaMhc6O3kt\nZeIugE0ITTOUhy1tKlqQVAFThTB3F0mWyCgfW0iWGgaBNKiU6+Tnpog4cUo6YMv2QaSGixde569+\ncJKLme1k791PPmFDxMZdKJDJdjI/PU/3wDDvOzJG0lZoJbCsOCUIr1STF8eH9UVPLQgEGCJU3hEi\nFCLXCkylMapFSlfzjPTkGL9ylTPPPsevfupJEAFCWE3noSETI3QtGo1PtruDju4OgiDA8zxsYbcF\noWdnZ5menm6LMNfrdSzHJpVKkensZNtouo3gaDEEFotF3IbHysoKnhtQXCOl19UVfvOePXvQBLhe\nOHmk02kilk2lUkFrje/7bQ2AtuNYUyuQUq77vxDiJs2AH6cZpmTbjiESiVDoular0ZPqI5/PMzEx\n0YY35ssl5ktFRHxNdFr90Z/7Tpht21CrhRTgzTRc61qJZvOP1HIdP2ulUmF+fp5gYYZO2+HI9jEa\npTJCi7fVyRoIPxyXzUR68ygQgNJhobm3p4eRrhwX5mcYGBsFGerP3nXXXVz5Ceqhux12Rzr6t2Ot\ntu2AMKo8ceIE+/fvp1gsksvlSKVSxGIxyuUyotlcYdgWnhAMDQ3xyswcRiAJYn1w7STB3oOklEBr\nQUE3SHsmK7ksX9+S438uB4wjUHMz9HVmsbMdVAqrzC4vcfyFF/nIh56kp+QQSAdlmhw9cZ7LdoyO\nRx9k0QoQbo1t/V1MX7yGuDRF5PIUDxzYT8J2QPgESiHX+aibFGrb1mJ8lIAU4QCRSpOUmmPHn2db\n/wDfeuqr7E+n+Mz+PVzfOxwhtuXgehsLkDuOQzqd5oXvvwDA9PQ0yWSSeDxskknEYhw4cABF6Iiv\nTU7ieR4LCwsYhkE8HkcIwfbt29uC3alkppkDDgWly+UyWmsWFhbQBLzw4vOhWEuz1tLX14fWmsHB\nQYQQJBKJdjRoNClplVJUq9V2iqCVDridNWPLknSkHWQjzfFnXuPyuRnsyEkgjGbnmOe8uEDfoCLi\nBTQaLtVqlZWVFTo7s5jEQ5bQwAE3AebN3r9kCDwBsUAzYDg45QYWYCmBrrmhlKUTYb6ZPWrlyiP1\nGr2jIywuLnJw3x6CZIzqmhpKICAQCsd3cQyTxavXkLNzHIgnyGxr8tY3asRjYQBlqpvdiQ6u1yY8\n1aybSau9MFFNHQ5Dm6DBlEYbkdhKzsjwg6hUGlieTzqZpF6vU5VQlzAZi1C9aw9f/s7TfKhnmJFy\ng1Sik2rZJWIn1hzMBhdog45UZdz82IwJgrZmbEsq01tz8zVVLLDkzUsOz795W2wNm2iL48ZY8xuM\nt3Bf39GOvk3g8wYF6VZUp/T6nyIIo7nBwUFmZ2cRQnDx4kUgVM8ZHBzE0gIhTJSWJJSkqDWJAOqr\nKzixPpIHDjI3PkV6dCsS2OIZVDWUpcItuHznWp7f//3/Hm9hgn/1a5/l3sM7aTQ0Q9uHSHX1EMkM\nMXNllsjIAH//zA94wdUs79jPeK2OU1hk38gIF0++iH9lHrWwzMcfew85x6QqGnjCwNJigxtxY2e/\nuLrK9PQ0W4eGkBos5ZMyNX/zN3+FW1pBLMzz0PadxMuL5LIpQoKdUPQwRPlc/8y2g2zuYRhh52WL\nWKslTtEqntUbDV586ShBEFAoFPCasnQ7d+7EMAyy2WyIRJKS1ZUCqytFLpy/tA5HHY1G29dLE/D4\n44+Hl74ZobcizRasrlKpMDs7S7VapVAotNMT9Xr9eiGwq6tdQ7hdFgQhPp5a6EA7OjrwlhoIIZif\nDXHsWmsSac22bdvaOqqGYXDq1GmmxvMEG8+/b9ssyyIWi6GaqJofhaKybZv83DyL+TyDySTJeGLD\n/TZrreG8VnJHNPM5Rvif8Lk28YIgFCVq7rfqVdCGgWh12Krwr9AhRHSlUOCuTC+NuXd5OfQTZpvR\njB0CvkgokqyBP9da/4kQohP4O2AEGAd+SWu9IsKR+yeEIg1V4De11ifencPfnKXTaWJOBMdxmJqa\nol6pcvzoS2TSSTIdWcbGxqDqMmTFGOrexlfOXqbr0D5Ub475uRliTXxuQQiSgUTiM3zkHv7g//gf\nGXC24KTijCR2c2jsEWJb0kTxuXxlltOFOpHsCN986STfuzjLyMMPEswpsgOjGFHF+JUr6IUFhF/j\ngzvvIRuxWKaCgbEuFdvi+tmIua9lZvMhlMYQgphjMXvuFe7fvpWh3odZKq3SmM8Tk4JauYjKdYXE\nbc33bwoqqS20htmZMG9fqVTCPLMQ+EGAloLu7gyZaBTXdXnttdfQWrebW5RSJKMpent7GeofpLOz\nk4bvtovXABcuXEATUG9cb4jRBPT0hBrd8XgcKcLc6cDAAEIIguZKREqJZVnU63WEabCwsBCqlunb\n1ylpWTYrKyvMXJ7l8uU5grpNph4ixqJr6DJc9yozMzNcu3aNZDJJLpdjYGCAuakVGu8K8D4MkmQk\nQhC8cWprfn6epYUFsh0dREV4jpW+dfEbJa5rNSsR/l27clVNRx+xLZZn8iEYomklwyDmxJBATEFU\nwIoOUKbBlpER5OlLOELe3OPxM26bieh94H/QWp8QQiSBl4UQ3wF+E/ie1voPhRD/Fvi3wL8BPgzs\naD7uA/6s+fetH1wzMtvoPrwxyLc3UF2Ktn5d0KBSdKkAsWaePt7XR61Wo1wocOzFFynkl9nZtwO3\nN0t8uJeBWINoTTLcPcyy4RCR4HoKx5IIO8Kp7z6DHnoIc28nydkl5NADTDu7cS8co6Mvx6oreeoL\nf8y3uh/m/o9+iMSOu7lSqiIzFTzPoyuZ5tT3niaWX+DBe+5noDvJvFdFYBCI8MIESAIt0cLFRtBo\nNKjX69i2RTabo1qvE/ECLj5/nJJb44G9+zk/vcDVV4+zxapxMJOlvytDMplkprzMww8fIlUsoCM2\nCyurxG2LuGWDYeDq63SBgeejlEW1EubmU6kUp06O852nvgdsXFhtFcFnJ6+0G6uE1mRSaVCKnXv2\nkssm8esllOuxMD1FdzpF0JTWsZu1lt27R9qf2XL+rdrKxMQElWKB8tIyhpCUSqWmwLZGWBbCNEjG\n4uGEk83Rm0ph6OvX/HZYq75x8eJFtE6gtcYLwjqTE7VxXZdGo9GGqp4/f57V1VUmJyfZsmW4eQ7e\neRrHcrmMk+omnsvRaMxTrVZRUnBlYZZUKkU2m22neBqNBlprDMPANq2QWtu69WRA3atj2FYIyW00\nEKaBFgLXdbEsA2maTM/PUi7WuXzxEg898AAQjvnlCKS7erh66TL9HVm29Pez2ChhI+jp7WX10iQr\nbh3d6kz9MZrnee3UTRAEYUF6DTq2naEwNgeZXUtJ3ArE1gZkvv8OKkw1dTFnm89LQoizwADwcUIZ\nNoD/F3iG0NF/HPhiU5HnqBAi0xJb3twh/fist6ubIAiYmp1h+9at+OUGk9NXuVpQTPgZtBNhbGiM\n+YKHX4Xx+StYnke0O0d6x3ZGP/ERZl49z8gT3fzV1ByrLx9l7644lakCg+/9JKcjEYzEFhb8Bqrq\nkjIdeuMpUkS5+PXvkdEGOw8cYl93N+VqgcA2woarGzBxEnH9QgvB+MwMXt0lnkxj+ho5Nc3Wzk5O\nP/VNvCR88qHt7O206LAjFJeXGJ+9QGzB51r9dToimlS6g4gdhcBDOmH6RGvRjqSECJu+5ufnOX36\nNK+//jqdmQxbtoSR6EbRfys9ks1m0VpTKpWQzc9CCC5euMDxpTn27N6O5Vhk0ptXBGp9dm9TU9RP\nppifnyeuFFprTNuio6sLYRokojECNBHLZm5qCpPbm7rROkzJUOtkacZjenwZT4RIsarn0Tvcy/Dw\nDgYGwkF9/vz5d/2YWjWAu/fdjdXVQzyeJj83QyCgq7er3QW9GSm+W7FGo8H5kyeZnpxkz85djIyM\nkEgkGJ+aZWJigmKthKsDrKU8phRs6f0AFRkizHqzPbx27IdcfuEldvYOYGwr0L1zAE+AE/i4BCwa\nAdl35chvn62srADgqOvOv7u7e9Pvf0vTshBiBDgEvAT0rHHec4SpHQgngck1b5tqblvn6IUQvwv8\nLkBH/I0ZH98tK9fCPF5nNotWAiPu0GE4JKYXKZReZypQvK6OgkrDXAXrUA9GTwcjwwdZUJL5uQX8\noUGuIajt2EJMbeeUVcTUFldUwOLwEZyqz5WnX2Akk0V09/D61SsMRhNsyaUolEzu37qdqGlQC3xC\nl35zDl5qiZSaXHc3r58+TaRaJdkDly6eYocp+Xef+zB7D+/mt3/9s+zbMUZn+TKlkmQVSSAE9QAe\n3nsApStIw6VYqqH9Gq7boFYuU/c8hPARhkEul+PsuTN8/evfJdvZj9aanp4eJOsjjButlddv7ROL\nxa6zgBoGrueRSKeYmJwM0T6GRa6rg9yW6zdrK1//Zk1Cdd+nWq7Q3x9i9F0VsLC0SKAUi/k8gVKs\nLi4Rs20MDfXa7XP0QsKqu0D//ggdo4rewyZpGUKDT58+TUfHMp29Nql0J67r0t1vMT8/T09PD5VS\nHRUIPC+Ey7r1UrOzbmNrdXEKIVpISnzfbz/Q4UrMkBa9Pf0s+JJ+YeEFZeqBZmhoCC8euz6RNzNG\nrZrBLcEMjbDwaqCQvgdCc+J73+HimdeRUjPy2EP41SLzx76Bt5DnnmiCmBbYSrOSTTFbq+C4qyxb\nUDSAiUkyU6/ykF2hb/4CmZkLCPP9dPT3Ml+vshCUaSRjpAur9COwO3KkgqajszeJvlImtUq4ktJB\n+LjRU26kNdsQzftWQMX3QpJAHY7mQpNXKBDgBzcHShtJajoirOWUSiV0o4QtwC+H1Ba2bZMgg/lO\nc90IIRLAl4D/TmtdbA1KCPU0hRCbXES03/PnwJ8DbMllbgsuwlTNQiRgoMO0CRoqLg8fOkj1wG4W\nBxLMBgZVIFYvMHnqNK89/yxjD72fQEoK0kcosIXACCwm45AMNDU0QbaLvqEu/P7txCM2lUKBYVVj\nZyTJ1OuvsG3nCE4yQr1RAUuCDmiSNq87TtWsyebn51mYmeZed47CD07y+Q/9HPtHBhl//Tmir1js\nGB6jPzcE0ieXC52c1ppuZTK7cIX5+Sl8LyAajzO6YzcxJ6R3qAc+QaPOuQsX+Iu/+As6sxl27drF\n0mJ5wxt6sxYuYzVyzQpFYBJoQSqa5r/85d/xa7/z6fZrm41QWnea00TtOCiUH8cNfHpGR1EC3G0B\nuUwGQ8O3zk688Qe+m6ZlEzVjE4K8bQrFcOJ5+KH34XkenhdCTltd3++ehdchpE0WmI5NuVZlcmYa\n3/ep1Gs4scRGPVbvqOV6epmemCRoNDCVpF4pUy6Xw96YpdX2fiaC6mqBxsIivglIKJ45w/50JxVv\niZwPCQXPHz3G7sN3Ee/OEQ00sQB6enowNqLJ/Bm1TTl6IYRF6OT/Smv95ebm+VZKRgjRByw0t08D\nQ2vePtjc9qNtDVc1vDWJrM1aVN4cCalm9NkCGdZr81wuFwh+7lf5574YfWKWiruNWXeZOoJeDLJb\nx4ilMtQMTdAQxJot4kpDzfLodMNjtzDAzlLyFVYkyhJAupNkvIPZ6cs4s8tsHRjBdxSVmg8qZPFE\ngK/BVBLfEFgKBAptgG4oHFvxe5/8Bb74xS+yrztD2jY5eNdjWMVRFi7/Lf0dSXr6oghVRlpeyO9h\nBVgZh53du3AUNHyPSmmJ8SurIaJBKY6/9Ar1MvRmdmJJi3JeEdNNTHcTIac2UK9/I1MAIhQ1NOyw\nXNwSfi9VPLq6h/nrv/ga27aPcPjwYfyEgxM18BqNkCCt5XJujCF8n45kknq12kTzCGKmRdTStOCi\nUQe8xjIeYV/B7TKtBH7VIdu1hfnqPOXlEivTIUGXX5ujUCiEMFTCdE4ikWgTx609260egmg08Zaa\nz0zTbD9Yw8JQr9dxXI9rc1dxa3X27t0LQMX3sW2bYrGIUopUKkU8HmduapqaNLHTGRwEDbe27jtu\ntLWrvxBdo1qLDO6++27uPXIYAGEYVNwG6XQa3/fXOaS5ySkGOjtYOH6SUuBTC3xGGi7mxBL7Mp1U\nFhbZuXUb52eXmHrxhwTxKJ3JOI+P7aEYTFGez2/6PG1kQggKhUITsn17Jo0WVbtSiuXCKpkm1UuL\nnXOzfFNvyqTTRNH8Z+Cs1vqP1rz0VeA3ms9/A/jHNdt/XYR2P1C4E/PzG9mstDnavZvXdu+jlsph\naJ+cY5BJJLDsKIl6QG+2B9OM4fvQ2ITCgdtE7LTiYhFzOPVP32Rn7wADqRR6AyhNXAdkVUCPG9Dp\nB6TLdZzZRc499S0+deSBDb/n6Lmv0DksKHpzTMxdxhOglI8SGqkhF41jEebhDcMgnU4zumMbvb29\nHDt2bN3A/XHa4FA/8wtzPPfcc0xNT4ZdmcgQvKzlxiBmKcOGMCE2TdN6u0wpgVsxeeY7x/jhi69z\n4cwUC9Ml8jNlOpMDGCpBccmjUChQKBSYmJjAdd12PeTdsJbg9sTsDMulIto0QtZHQhirlJJarUax\nWERrjW3bbdRTvV5fRxF8qyaEQOqwg3ZuZoaFhQUWFhbW7ZOKx7H8gPr4FImFFQYqHlEVEoVdnJzA\njUeoJqPkAuj0QeZXMFeKGEuFNqXDT4NFIhEymcy6R6tfaLO2mdD5IeCzwCkhxMnmtv8J+EPg74UQ\nvwVcA36p+do3CKGVlwjhlZ97S0f0LtlmRHUFARWhqRoC082yq/cAk1cXmXv2eWjUWfzgXUyn6ggZ\npQunuRJ4Y2fv6DD/1vA8hNYUX36OoZRFbmcPdavB1PQsuY4bSkdCYxDmoRGa137wZQ7t2c0f/6+/\nQ9SxSdVrHD58mEqlQiqVwjRNTqwUGHnifRQKBU6cPEav2UMUiSEttARHCUzTwkfjN9EBpXKZL3/p\nKyil0Mq4ZQKtW7HWd3luQCKeRCnFsZeOE09EyHaF0V0kaqMVtLx5C0VhCIHvulydmESjEIaB1pp4\n0kYIQTqdRghBrjvkRRI/Yjb4cUCHq5UqJ374WlicbtIddCW7QrI+I87o1t3s2LaHSDJM2ziOQ7lc\nZseOHVw88/Qtnt03Ns/zQsRZvhY2w3VHSfqhsEe9Oa+2eheEEDiOw9DQEDPnL1KpVPADRTqzeaqR\nG01aBtr18N0a5cUlKtNzDKTTOBqoX192dCZTlItF5s5foiebJdvXTy1pUROaSF83Zi7Hc1cu0K1i\nSAHT+SVEo0F9YZFyOUwH/TRYLBYjGosRs8x2RH8jeeCb2WZQN8+xITUSAO/bYH8N/N5bOoo7xBq+\nQSKRYK7hovptLheqzJ8/x75PPInuTDH30tepeXliPYO40X48DMw3SWH7WrebOxwtmPruU3ziIx9i\ncTUPHZ3sHB1jaWlp3XtSwqC6usTrZ8+CH/Cvf+UT7B/Zhhm3uPH6Xrt2jXPnzvH9c1fJLWS4+/Bh\nrpZXqClIAtIQKMJVhdYCKUAIgyuXr/LNb30XwwhJy25XaNziPRHSpFav81d//dcMDfUxOjraTmPE\nm1zlLUoFz/UYHNnK7v0HEFphtkDY0kMpxenTpwGYnJxESknlRw/4dx06rAOoF8CR6bApKIDCqgJq\nPPP0y+39OtKh8lcyKQGHC69NsLTkgpZ42sWICdwNOioBar5HzffafOxCAK5GS412NaIR/u1o1qQX\nF5fpjsXYc89docMvl8lojee6dGSSVEqrxIRCEBBVHkEtQClNbnCA5eVlTo2P8/OxzHXNgqZvrpsu\nVakItMZqXpMAjYkAw6QuNKJa59TJl1GFIrMXrnBoZBujUYOkjFIsFplaXqa3t5dSqcTytTmy2Sxj\n9z2IBGpaUyoGaOXguQ3c+jymVNgpg1qhRjrpMF1e5NVTL0PXKDKe5OzEFDtyPXSm0ghujvA3Km0b\nBNQrxZD/PpalXC7epBn7VmzdyNICjJvHmtwA4VTywxRdqYUlsNPIZncxpgnaQm1y3N4ZnbEirEa3\nxmsQrOe6ubWPXD8owhSGgWlYgEZ5YWZAoEEIZoWiaikcr8JAoUy0S2GkG8QeGyadClDVS/Tcs5ur\nU5NcvXoGPaTQOk4qkcVCEKBRMrhJr9LGRKBx6jUGolFmojn++bvP8OSj9yEMi/pCnpSlcVmhp6eH\nL33573m04XLo0CE++nMH+cIXvsDVxQfYtTVgZm6BkS29nDf7+IYY5Pm/fo777nuAenwPXY/38Mjd\nBxk/9RqrQQHTNsCLU3IFoq1GJFCB4uz5izz9vWexrQiWlWBlZQlLWlhSkslkqFTLGAhM+52Xx7m5\nJ0ICsimOYZJJ96GUQVdXD/19A2GxXPmUKyU818V1XQIFqzNzKDVDoVDAD9yQt0XokEe9eQ2EsBka\n3EI0kd7wWH480GGBDEyMDVzK2hVUizxufn6+vc2Q4cQWBAotfXzxzgiwRCIRxsbGiCQ7qZk1ysJm\n9sJVuru76UgKrAAMX1OaX8QzHLpzuVDNSGu0rylryYkTJ+js7KS/v7/d52AFinhTj0G3OHMMQIEp\noVwpMzs5RXm5gFcokM10UiwWMSI2yXh4r/X29mKaJktLS8wWyriWTV8s3ob8BoEJvgGBjVACSyrK\ny0XKxQpe4CG1wNSCrr4+MpbD3PmL78g5+0m3O8PR32DXi2ctZ/3mDse9gQLBvKF4YigdzqamQglF\nYLSEyA20iuAu1WnMrIAaJ1P+IdNfepXZ7hQyFuW8Ugx1pYkYDkL7bO/sJBrPUjDjxKNJ3HqDulcP\nP/8GR6aFjyUEOaWwrlyjV2sefc8jbNvWT7FaC+FXNRevtMCffuEL/Nbv/ja/uXOsLUXW3d2NysRI\ndg0ijAKLJY9/+u53OXN+lo997GNoHfKc5PF55cUXUdUaXUmb2fFp0oP9+FoTlQZ1vxbio7XPiVdP\nYEpJdy5HuVijryvH1pFRZqcWeenYy+wc237bInwIWRiPHj3K3j37EDLseM3mMlimQzKRbg/6lgyf\n5zdCgjShqTYLtBBC4GZnZ/G9m7ngb7R3CzosjGjYqbvmfLZyx2tXckaT6mJtcOPYYR7W9dw2+qml\n1kRycwXZdDpNKpUimUwytbjK6uoqe/bsobu7G9/V2NIkFo3Tnwwnw2889e027US2o4P6xDQnT54i\ncMN037aREbZEk+x4YCcLCwu8fu4cW7duJR6Pk4mGfEm1Wu26EtzSEqVimdXVVWr1Kvfcdx9OzODs\nseNIy8SvN1gpreKtBnR1dbGyskIymeTgwYOok+eJRWPr0q4isBBKNLugDXwaTC3MEGBSMwRWLMKR\n++/FTffiF0qbOkc3WqvQ+XbYK8vlMr29vazewiFc/73v3Bi8Ixy97/usrKy0VWlaJ7ZSCUWRa7Xr\n4sitDsyW9mmhENLgGpH1OcOIWI+drgkbZIhS932TinI4dXmSlVKJLQM7ufveD3Pg/Tk+mk5QExLT\nyLCAyUrDJTBNbK1xA5crVy/TWCzz/S/9I/UtW4juP4AZj+L7DVwMIvb6U+oIE4IAXa5y6rkX+Vef\n/Hk8WaNQrWGbDsX5GS6dPs19W1P82uNP8OTuuzBlHdMMkQ8jI1uIaDh3vsCxoy/zw6vnsXLdHDp8\nhGq1isYEw2dkYID81AxOcgsdex4nFknyjae/RWlhmpHt29i7+wCmgOJSgamrE4zuOsjufYfo7epF\nGvDNp75DrVpn195dbQHmd0fzbnNWqVQwTZMDB/c3KWoL+IHHyvIqgfJD8jOtaTQa+IEbFqearjmm\nyAAAIABJREFUcnotIWkhBGNjYzjOM2/4Xe8mdFhaKX2jo9+suX44IQSBCvPlt9Ahm8/nyVfKyGsO\nNR0W8lpUC48ffpS4bRPNJNtMop96/P03fYZliHanc2tsekhSiQTduVw7VZYyBG65RCadZubSRdCS\nrmyWbCpFXGuqpomuVxkZ3oqs1Lj62hlMy0ZqH1T4W5PJJIZhUKlU6B8K+w1afgAg5sQQgYnthFxN\n9Xods8nVY5mSocEtdEYTzL3lM/XTbXeEo7csm76+vrZYcbkUOu+2SpR9PXppzXatG671t83u1sx1\n1fz1g8LGxPMDajWfEwsVLuoYH//UfxNGNqZFw9d4QlBvNAi0T8QsYwqDjBlG/tIAWxl07d2KgWSs\nkOVSucR3nvqvpPft5vD7P8iJi7PceErrGhIaJo4d5/EdO3A8F2W4GMpj6upVUjGL3/ulj3BkoIvv\nPf00PWYQNmgAQlgIYTGYKXP67BQXp67w3ic/zHypxlzNwzEEjUBgKM3CmUnGT8zw3o8cJpIbJaU1\nj/zyThKGoKEVZ3/4DJfPnwWvzmMf+yXu3r0Xx7Qprq7yzNPPkM/nSdiZEPOudbiGMm6Pow8dddgl\n2tPbTTTq4ERsItLC6nDQBHT35NpEadBMfQhNNBptO3qtNcvLy2/YCv+uQ4fX/Ka3ajqQTZhp8/+3\nAPFrNBrs3LObrbvGsFPDbUWppaUlXjv+UptTp51+aR6nEqD98PuEF55PCahayLxTUeG2jmSK9zz4\nEJVKBVUtsDo9yz1HDmHFwuuQSsSpNuoYSocUFvh0xbM4wztIapuYFsxOXEEtXAVC0reW2pXhpEOg\nQKsWoCEZT0JgEahVyuUKpXqFkmHhBoJAmmwb2ELdvvV8+k+r3RGOXhqCWMYilQs5yWPmelWitWK/\nLee/nF+iVm5gCknd1ZSL87h+QL3qETTK7Np9F3lPgrLwhaRYrLMcSMZXKoxt3c0n9u/BDwRuQ2No\njSlBmCbxtcu0wMZqNar6EEhBi+JjKJtlKJvl8eERAM793T+wE0g8+jh/WapjWXEqQrNULmAVlrCr\nK3QmtvDq69/gg48+xj/86Rf43Ps+xP3bd2L02OAX6O+M4lbKdHbsYH5qGmUkmFySfOXPv0bP+97H\nwEMPcKFSwqsrhBYII0pMegSu5vsvv857Dt5LZ6wDVwdUhItWCYpagB8weu9HOXDfJ4hKg6M/PMp/\n+odnqNXKXDx9hqHBYZzEADUrzkI+j1Y6HFyNIMRSxxNkEzFQDWzTIBA+BhJLhcyCOvDaRV95A9um\nMDbvnNpIHC8Uj5iaWubC+Wm2jnaQSCQwTQtpQKA0hinDjk/Pw7IsOrMhpYLv+xiGxLBCB5lI2ZjW\nxqm/TUCH/5CbocP/rRDibwmLsG8KHXakZntsPcWW425AjVsP9/Fra/hN4gkMNJYFhgS0YnSLTcpp\n4HqaBc/C9WBlyULLLPkVhdQREJrLlbCo+b4PfYZ4IkNUJpA1h1DRFToyadRDI6yurnLs1VOkUin2\n7duHIUIhmbXWui4BtLOokVY6zA8wTZNCpcrV145z//33E4kaWM1WT88rYoVlGAaGcpw5c4aI00FH\nIkfHvhwzMzMcHN0NQrO0vMhLL7/M8rJHNjvIYMMLewbkdbbMRNxjdTXP3Nz1mH3KiDBy10HuO3SY\neCJB2ZPUI4JoJkUQsakKjfQadEY2uBc32NRqYmvRmcdisZuChQ01Xt9GXOSrNYFAs+dno7t2bVPt\nm3DRrbM7wtHfimWzWSLdDqXlVTpySaqGoKojSKeb+fwCX/v+c+RrAVKZjO3Zw9DoTgzLZijXx+ry\nMssNyczyHGJqjnvuuw9tKN4O9VWLG/3kf/0SWw7dS2xrmktBBd9vMPWlL/PpRx4i3umwe9sjTE9P\nt1ciqVSKMh7okG9Ga8FiuUTf1hG+9p2nuDY7wwc+8lEuGBJXhYIiJha2KTEUaDdgdW6Bg1u3s3P7\naJut0bTNNvBTCkk9MPCVoAJs2Xk3/+ahJ3jmmW/zvg9/iI5MlkQqRTwVRlOe5+E3XNxyhYWlRaav\nXSU/OUmgDeaWFkEEdCbTSMPEUwppNG9JoXknFWGFEMzOzjIwHMO00iA0QZProxXltVIijuPg+34T\nB96sAL65vevQ4Vxnhs//8ifWbTO8m6kkkpHQAa/NBxcDD61Nqp4i0AZaSE6fP8fVfI25uav4hI1V\nDSuOAlZLDVAaITUd6QSHDx8mErWJJxKY0uHGr61Wq2QyGQ4dOsT4+Djz8/OkUikikUh7RbQZW1pa\nYnFxkWQy2X5sll9oZWWF3t5e0pkUua6QSXZlZYXLly9TvXIFHY1Q868Xoa8tLrC6uspavfK7j9zD\n9n0HiTkOQmp0oNuMr75SoVaDvH01pzvBfmIdvZYQtyPkhvcwW69QD+qcmqhw/OwrdPcPcfen/jW7\n9h0KUTCmpKE0vmGyVCyR6B3C1wGHk1ls00TqUPy7fXfcgrUaSj6zbxdnry3yzW99hZ69o2RiCVZ2\nDeEaVUSyg/HxcU688CJ/9Ad/wIXvfp/Ori5KboihFiogEY1wolTk9//0j9l75CDv/fQvMl2o4Eij\n3UHse+DrgGQqTsS0mV2+wK6xMXQQEBgGFuGE0T5XAtzAoYZAIwm0RX56gb59B4nEFFJYKARlLTHS\ncSLNZbktJT1KcUg8ivQ8DENjCZibmeHF7z/LmReeBaXo6+jECBRKBe9k/QiAy5cvc/f929dtazn3\nQqFAvV6nXC6zvLxMIpFgeHgYKSWJ1JtPOT8O6LD2Grizl9Y58MXV1Zv2myjdDAGNZTPkSx6LNYty\nEKOhbSq+whCS5VqsXYfQcYOAADvVS6Meyg5++P69RKNREskYSrdSm+uHeyQSQSlFJBJhx44dAMzN\nzVGr1RgeHqZYLLJt27Z2HWytrY1w8/k8QRAQtW1mZmbo7+9vvx6LOu3jLBaLXLx4ke12F729vczN\nzbW7T6Uh2h3QjuOwZ88eJoVmbGyMqakpzp49y/HjxxnrTYBj0Wg0yOVy9Pf3c+A9j4QpTEAbYCmD\nuqkxFBw6eJD5189j2ptvMGoVY3+a7I5y9O2Tuwl/G2jNSk1xenyRZ8+dIj44xHs/9ovsf0+oy+kh\nKeoALTSmaPbd45FKhfl+rTWBMPDQCKEwpMJ6G16qVRtYWinQ4Zh88PB+/voH36eeivGBPWNQq7OQ\nX0YvLrJjxw6klJw9e5biex5DR8O8aToV42//5r/wbT/KfU8+QS1wuVot4hlm2JwlQkUsOx5etpOn\nT1CbX+L9Dz5EPJ1GGBITgaEVSt94fEFIMKYVZkRjRBIgPXwjFD4PfZggCBRSg5QCvym+KZFoYSA8\nL1SvynTxwU/9Kp//7GeYvHSZo9/+DqeOH6Mzk3lHGHXXDjLLsjh27BhPPvlkG3ly6dIl6vU6XV1d\nxGIxOjo6GBsba3LfV+8ojU8DRQc1zDVDzUjevChPdfXctG21skpZagQRasqhGMSpBCokOLMchAxX\nAIYlMVBoKVguzPPww48RjZbfcvckhE62Xq8zMTFBV1cX09PTJBJvLDSitSaRSNBpWaFOcD7fpmmY\nmwux8Ol0mqmpKUZHRzl/4QIXL15k3759VKtVarUaHWRu+tyyISgbgtEjhxCZFEEixuSZlwCwYhG6\nRrdxz4MPUmz4aKyQPgR50y2ohXjTxsafdrtzRsRbNAPJ7HKFiWWLxz/2GTp3H0BJjVH18ZDEhIkr\nDVwC0AJfhAG71DJ8TtjEpBCgmzfH24joWyaVBK0YiiX47Yce5+uvvMYLl8axtc9oJsPixATve+hh\nJiYm6OzsJDUwwN+dX+DcuXPUajWG9jzMTgcW3TrYElsIAuEQeCIUHtEQMTxWV1e5fPUcv/6JX8Kp\nh3UGo4kgdQUY+vrtrgRooRFaIJskbqbSKC1BCZQ2QKiwj0M1dVaVwNd+iJ9GoIWBbjpgIaKUlMd5\nT2MMjPDez/0WH/6Nz5Gfn+Or/+cfbXhe3o61HPzy8jIAPbmuNjoDwLLNcKISgo50OuR817ePsXKt\nSTQx4WKuKapGUjdDI2ul4k3bIrKOiYnSOozmVbTp6CWReCfCUEgEqYRC6Rrl6jIPPXqAka1ZUo4k\nmUxSrb217tCOjlC4XGvNtWvXCILgTR2953kMDg4y3Glz7tw5rl69yu7duwEYHBxkfHyckydPUq1W\n2bZtG3ZqiEwmw/j4OMVikUQiQf9A303porrQ1FAsVcsku3Pc99h7+MWPX1ceg/DeCNwAA9HsxQC0\nCBsZNWA75N0GloDNE2P/9Nkd4ejzK0VevVpg67YMvu8zkLgBA9/kY1cIzGiGuXyB770ywyMf+Sz9\ne+OIni7yjeZ7mvL1oum1jDVRuhLr1W3cNTo0QeC0CzNtwRNuSGpukPaVNxB9Kd/AtKBRKZIQcN+B\nPfxfT32VfbvH6OvrZyz2UWrXpvnexdNUaoLf/d/+hPGeLgYHB4nlIkwDqnVYNXABaYVNV1IIFILt\n3cN88R//b3pkElELiEfiBErjax/DsjCQ64jAQs3N9j/XqRt0SH8rWs+bv0UTEqutjayFuM5BqZvd\neaaKg4RVoOE1ILedX/j3f0a0WObV107ylX/4Eo706YlaocA6gojx1tvSJ64W+csvfpWenh4syyJi\ne5giwDQspCEQwXWn3poU7CbMNRKJ0KjePs4TjcATDlpcH2reani8ax1oNBbWeNY6upPn4ZKIMmdm\nUUGCTmyKtSkcO4JjaKTQmBpiHnh+mT37R8h1RUlHirjaYrFYwzCaKSwBBusbrtZGvobR6mS9Lq6+\nfft2JicnOX78OLZts3//frTW1Ot1enp6mJ2d5ejRo9x9991YlsVsGTJDu1laWuLP/vIrrK6s0NfT\nRSKRaKeHVusmkXiEuhfQOzDEuYuXkZZDoA0IwrHnui5nz57FFBZ+IUAKA4mBBcyu3HyOzbDhOCxO\nKqgLcFoNW7bNYqNBXNBGs623TWrG3rDbm7G6tgRnNmtvhyV2M3ZHOHrX9fne0z/gs0P9P2KPACFA\nKZvpxQZnJ4t07HuA+M59uLU6wW1iltuMTZ8+w28/8WGe/+FRyqkU0biNtXWQSOCxtaeHyfFrDCRT\nJJKJH8n3bgQCrRWOHaFWqXDslWNU6lUeefwJvvLVr/LpT34Cx4myqZzXu2yNwMeOO+x/8H56Rrfx\nZ3/yv1PzPRKpFCgF3i3wjwjVJNeyiESiZBIRLBmKiktTgn9dH7QV6bVyxJ7noW/jeanVapw6dWrd\npJmMhM/XOvpgw5zXzXwyJgGOBFsoBAoTWC0USGeckOaXBkq9M7XHIAglHIeGhlhaWuL5558nEonQ\n09PD0tISjUaDgwcP3lS0TSaT3HXXXWQ7O+npyrKwsNAWzrjRuru72/UtCCe6xcVFuru7yeffHvvk\nv9h1uyMcvQCWF0v8P//5L3nyyQ/QFwm79FqDQxIyGpZdxdxSne4te9nxwHtZbdTWwPfe+p2tVNiI\nEo1G8dcgyloOV7wFBgC/TXm8fsAePrAXU0rOAid/8H1+4ZMfZVIVkaZJsbAInQkiptPGCxsSlF7/\nWxoyzJOjAgqVCq88f4yPvPf9GF7AJ3/uY5w6eZb9d+1FmAbGO1hEavcxtGGP6yOUG2F4AHVDNDVO\nNcZgL//+D/8jpdOv8sW//TuqxRLdG7MRbGit741G4riuy6VLlwGIOy65TJJUuoNcVxZzzerlRhic\n1eSsv11m26G27VqzNuA1acVzaycEv+jjC5+1UCbDCH+PUgp0gNdwiZpRtgwOh/TGloFp6A0pF96q\ntShyfd8nnU7zyCOPtF+7cOECJ06c4PDhw6Hm8hpLJpNcuXKFZCLRdvCLi4vE43GSySTuGozg8PAw\ni4uLoZ5wMtnuBgc2rDFsVCRtiXZsFEE3Go22QLwfCc/Jm9Vw6vX6xvDJO8zeipTgHfFrAqAiYKVQ\nZ3Xu5llcEl6cSq1MpVTk4O49VDwvPHglUerW5iutNc8++yzlcvmWGlo2Y7ZUJJXPQ3cfQteqmDVF\nQ5h42qSGSTEQ5KwIncIk7gbENmClS9Z9+qXNK1/7JpeffYHP/+onEe4Sfm2K1cVxhvozXLly5Y5A\nCkQCG+2HfCS6IZj1JLHRPXz+f/kPvOfTv35rH6rDOkr4XFKuac5enGZ8Ms/M/Gp72bt2cJprHnca\nsM4U6qaHoQMMHWAJ3X5sZFJKhDTwA41GYlgO/YPd9PZ3YZjNlN2PgX//yJEj/Mqv/ApHjhx5174j\nlUq1Ycv/Ym/P7oiIPgCKhIQiHfL6hW3N0Ka0WKm4TBVNdr/351mOdeGbUVrTmYl60+TNRlJdhpBs\nG9rCwtQ8w0PXu+naDuOGtJmwNUJolLgewWv3etcgwI3685KwOJqLxfnlj/4CX/3KU2zfvRORThK4\nLlv7+qlUXGZXl+jqzJBJpGkUqwih0SjSEZt6Mc+Jb36XDx7cxQeefJLZlQb7B+6iJyk5e+4qzx49\nzZWpBQLTJJdJUXU9Io5FIpHAskIRZt8LCIKgjYYQMoyYLGngum5Y3L0Qolm6+3qxLIuBoaEwGg5C\nzg9hhFQVjuPw6quvsrq6ShCEDTMtyuSWvF82myWRSBB1bOYxEIFg25EH2X/oXr78n/6MpcsXSGWS\n1HyXpCPDyLXm4hrg3HA1wwhsTY7bk8STceYWytQai8StBMlkkng8ThAEGEIgmrWYd2sCfzt2aYOM\nhDBCArP1keTGOd6wXqNBK+LRKLneJPGkhaKBFAabDvPehhUKBSzLav+Fm1dTb9daEf3t1Pz9abE7\nwtG/mXl+jJrrURMGhSCKJeI47wAPSzQapburl1Ovvc6RQ/exsBAyB7Zwv29kLfUkLcJ2fVP/iOWR\nCAud2g8wtWQglyMXi7OyXMDUmvOzJ5lazJPt7yHjB1w5f5F4qhO0T71W4sylC+hylf/47z7PYE+K\n1UoRIyowVI2sLbjv0FZWV2tUXTh8+DDaazAxMcGJV17h0KFDKKVwHIfVlRBzPj09jZSSYrEYQvOE\noLC8QiqVoq+vj1wuh1dvsLKyQiQWwzRN8vk8lUqFU6dOheyRQcBjjz1Gd3c3lmWRSqVIJBIUi0Vm\nZ+YIlM/Xv/517EiEsZFhBrcMh4008RgNy+Hjv/kbnPj2tzlx7CimJdAKTEOiMQjbvDbnMHp7eykW\niywvL4dRvSFxTGudo7udaRv+f/bePEquu8rz/PzeFvuSkUvkviqVSiklWftqSd5taAOmTZlmgIKG\nU/SZougZGMrNOdBFeaA4VdUwNZjqKg/laSh7wHZVGYMKs9hGRrI2W2ta+5qp3Pcl9njLb/54kaFM\nZcqWjI1dc+aeE0epFy9e/OL33rvv/u793u8XyDoGF/J1cx44wjP/2jUW8M3H0mlUbwm66SUlVUY0\nCHsFkMdQ3fx/tLKUWMxBUVMu8MAGEDd0Z9sLXLHCWCA1spD4S6EDeoY6AebWRUpKSpCAZgQZHO7F\nljpef5RMTqLOGpvX66W2tpaLFy/i8XiKVNQAWaewup3ForoQDYRVUHmzZp3qvOIQcMAvJXXSoUVX\n0T0zO8w6xgKXmo6Kmc7h170oNij2jV2RtgDdEdiKjZDSLTBzTeVMyAVPzUK8pMqb1JY0Tbth7sH3\nlKP3aHqhMDP3BzqmTS5rEa9uRA9HsBWNhafm5kzTVfwBL7qhcuHC+SIh1vVyeKZtg3Bx5k4+j6Yo\n6IaG4feTSiTQdZ1sxo3or/YEuGdCSvB5fJSXl3Nw7z4+/tBHicRKmJyeJmPmyFo2Xk0l1LCIZDqD\nbebp6kqxumUxSmYaJzeJYatEhMQbkiiOF2krpIHqxdUYZ7vp7+lFVcDw+mhra6Orq4tcLkc4HKZt\n8RJ8Ph9r167FNF1FoxOdnVRWVtK2qJVsJuPC+HI5hoaGSCQSHDlyhGg0it/vJx6Ps6KjA0VRyJkm\nHl3Htu0iJM42TXRVpamuFsOj49N0+geHEMJDYjzFK7v20biogTtv24FlW2z8wL8jvmwpO5/9EdmJ\nUcqjAUzhop3fLLs8M7fJZBJFURgcuMLo2AjrYuuwzByKouAt7JPNZn8vEe51zdCR1RVzHKKywHgU\ne/4KJD4wxURyYRcz40wbGhqAsQX3+bdkHo+HycnJOY7+/7e3z94zjl4wuwI/l3vOtm3S2SylsTJy\nuk7esd6W6kImZaIqBps2buHA/leR0mHJkiVouurSTVwTyWgSHBQs4ZBVBbaEJx//IY7j8MF776Ou\nvGJ+QliqrjPEwRawavUtjI4Oc+joYRYvbiMUChHx+QkJhWAgwERiGo+mkzUtxobG2XL3do4dPYyp\nxEnbBiY5NGnioJBBxdE9BMJBYuEIUcWD7Zj0TI3R2NRIc3NzoYkog1fREJZNPpVGSolHUdm8YSOx\nWIxkMkkimWRoaIiRkREqKirYtm0bWTOHqqqoqupSC0iX6ErHXaEohfNm2w6KqhL0+Tl/upOJsTE6\nlq1kactiysrKkJZkbUcH3UN9vLjnN0RDPhYvWUSwsYb//JWvcvC5Zzl2YA+G7mEG5HczpnpD9PT1\nEbnUQzAQQFVVQrp7pFA4+K5jkWxVIetc/U35Ak3xbDGLbOHx5vVdxdhLOemmCGcF2aqqkkgksG2b\n5uZm/H4/4bBZfG/Wt775uGalWmZSRrMpnReq+VwlGpx/A86AG86fP09ZWRmhUAjLssjn85SULIxi\nnxlzOBwu0jbPrMJu9LwtVIS1bRtHCkzTQlGUAtvtjcMdf1czTbNINS55Z1KIgUDghmOYN3X0Qggv\nsBvwFPb/ZynlnwkhmoCngFLgMPAJKWVeCOHBlWdbgxtqPCSl7HrD7wCqwwofuHcZHnsErkF5jOdN\nzvYMcfddlSRNHcPr3DSBkLXQEscEgYZtOaxbt5bLly+TzqR49bWD7Lj9dq50XSRWHsMb8LmY7ULT\nlUQlqdgcPnmC9f/uowxoCo/+y8/42qf/iGBuEr+uIDBwHAdzhgFSVdFVGJ+cYtWqNVw8d459+/ax\nbuN6ymNlCCHJpFJoQkE1NPz+AOXxSnr7RwhFqtm9/xj3bltKZVkU07bJ53KYDpw6e4bRyTGmksOs\niQRJZsEIBbG5enEZhoGVNYtpHEVRisyPfX19nDhxAsuyWL58OU1NTUUyJzTh5rxV1SUvs+amRGzb\nwTTzxGIlnD59mqGhISoiQVavWo6qaOQS44xLCxWYGBthemQYb2qag0deo/tKPxvWb2JcaKx48ONU\n37KOZ376HOmJUeKOipccjlBQpIMjfQiZQxQw3h6vgdenk7fSpDJTXB6YJJ0VHDnRRTQaZXo6QT6f\nIxAIMjI4wsi7iL7NpVJc3vfqHKceLOSe7VmOOa25Dn4Ontq4fnTb2tpKSUnJNc79rVsi4RKn+yPv\nTvEzFotx5cqVeRxGb9Vc8RNJf38/JSUl73oK7922G4noc8DtUspkgdL1FSHEL4AvAv+HlPIpIcTf\nA5/BlVb7DDAhpVwkhPgo8JfAQ2/2JfUN5ai2F1Vx5uUOp3WVtKZhoqBJAc47gxhvX+5G896gh117\nfkM+n2dzfDOOtMjkcpQYEUCQFvDaqRPkPH66/FH6FIm2eDn/z89+zUTfZaST4X3bb2PlksVo19yH\ntm3h83kwfB6am5v58ZM/YuXKlWzZsgV/MEg+k8axLFA1hBC0trXRPXCFsf5hDhw9RVtLNeWxKJoq\nkNh0dnZy5PVz3Lbx7kLRyouqUHT0J06cQFEUKmMuM+hMgev1UycZGhpC0zTWrVtHWVkZmUwGwzDI\nWSbegJ90bm6jkTPTXVyI/oQisew8e/fuRdM0WltbqYyFcHJppGNiqCYDF87zq58/z5LFi2lpbaWy\nPEZb451MSsHOnz/LndvvpcJfS+3iFfzP/2srT//gH5m4eBxVUfH6g5iZFJMjE5QEPWSyWRw7T97R\naVzUgaYL4lWl1FfVUFpaim3bJKZTRKNRvF4v+XyeeEUZH/pP756ypU836KiqndMjEfC4Tn12RD3j\n9POztvW+wXFra2vndAf/rjYjhvJuOXpVVQmHw6TTLoWFYRhviX//WhsbG2NJvOJtGOG/bbsRzVgJ\nzHS56IWXBG4HPlbY/kPg67iO/oOFvwH+GfieEELIN1i7CAFrNq6iIlKJhllcdM4sHaWULpLiHc61\npjMpnKxDSVkJGzauI5FKMTDYVxTgDiluVOYogpMnT7L1fXfTo6kkPRBfv4pz/+PHfPA/PICjWLz6\n8issXtxITPeSyWSKkZrf78fn8VBeXk7A62fHjh2MjIzw/PPPc+fdd6NqGj6fH1VAtCTCKwcPULuo\nheqWFSQnBtl75BL51DiZxBQDw4O0rFrPnXc9yCsv/ZYH7l1KMp3CF/TTfekig4ODbNq0yZ0/+2qE\n7zgOgVCIza2theWfJJvPI1SVvGWh67rbPW7MJQaTUiKlm2I7c+YMoWiEVw8dJh6Ps6StnVwuR3lQ\nJ5236e/p4uSJV1GRfO4TD2DoOiWRUnJ5i+HJKcrCUTKLG/jlzmdYs/02Gmtq0T0K7//Q+zn68zxj\n3RdJJ5Kowsbv11BVi/e//058frdhR9NVbNtkanoSHJVs2kQAXsNLNp0lm3aRGpdT3Tjy3RNQEdLB\nkGn8nllcN7ZbX5rtpBO2m7xRNAfdUZjy+vEq4DMEDhaasLFRiXoNJobHiVcoSHUUFBtVuOdJFTf3\nO/0eFzUzOjpKb28vq1atmoNOK/49i3p6oZTNzMpbVdVi+iUWi2HbNoahYlpZ90EnZhzufAeezWap\nqXE1af1+v1vTsG6sDhcojC+ZTOL1evH7/XjHphkYGKC9KgZYpB0L/w0CbW+kM3Yh8yk5UFynWl7m\nB3uC9KiKLS1sM49umS4fzwJ0ycYCrtgU8xsoZ0tESNO64ZTQDeXohRAqbnpmEfC3wEVgUko5M5IZ\nSTWYJbcmpbSEEFO46Z3R6x0/EvLSVBpHkWahmWLuCTFUFx2SSaXxR6tIytQ7shRTpBvzs0m6AAAg\nAElEQVS15i2LcDiMPxgkFolx/uQ5AoEAIiJxbJcTWtE0dK+PYb+GrSiYqiTYUs+loI6pCUb9Ose7\nu1kaj1JbW1sUVdGkCg4EQyGGhoa4Zc0aXn75N6xftpS9v32Z+sZGoqUx6uvrqayq4okXXuKTS1e6\n7IClDXjCVXhVC9s0GTpwkMr6dSSmktQvWsWBE8dobGrh7OuXkAq0tbUVm15U1eUZ7+/vp7Ozk9vu\nuKNYdJ49l284r4qC4zgMDg6iaRq7XnyB9evXE42GsawMfp/G1OvHeXX/y2zZfCstG7aQV/N4NAuk\nxfT4AKoKJYpEpEbYWh+jufoe9p+5zE/2H+CjH/0QZbEyli1vo1tm0Dw67UsWUVkSJhIwSBTqCzOm\nKjoVZa7zELgPsHnjl4L3HpL++ubg0lPI69Sg+rv7uX37doTMo2gZUCx4G8ihN2zY4NZifodjzBTn\nZ5r/bvYenf0Zl2765r4/Ho+TSqUYGhri7G9+Q2NjYxFO/G5ZTWUVEpvxsSnG8yNIKa8lVvm92A05\neimlDdwihIgCPwGW/K5fPFtXszTsJ1qQg5MIxDXUi7p04XeOI/EoNkpOx1EsCsy97sXpzL3Ys9dc\nsdpC+DV1fsSgSHCQLvbcsjA8Gh0rOxjsHeLUuTO0Ni5mKJPHCQYY01WGPQECtoouMyTQGDfCpFVJ\n9I77eerJp1hRFiAgD/EHt9+DB5usYWE5Jrrfx/DEOKGxYW7dto0jBw6yeeNGMqbJoUOH2L1nD1s2\nbaG+qZED+/eyZOlS4vE4jq67/TCKRU54SWZMjECQRe1LefLJJ6lubqI8Hqe0LDZHgSmRSnH69Gm6\nu7tZvnw5ZWVljIyMFKNKKaVLFQtFzndFXH3PlhJFgFc3uHz5Mj09Pdy29Va8hoMuJznffYGzF87y\nH1cv5e47NuIWvkwihmeWWoIFFgW/a4OEhmCAqpVNnAurHP3nZ6iqrCbmkaxbsxKPoeDzGEg7RyI1\nS5BjpiFIgMQla5vnWIREKIWL4N2M6IW4LoprdurGUUSh10mgOQJdqGiqhmmmsYSFZVtYUqE6Xk4g\nFEDTDVA9IG4eT2EYBrlcDtu2SSaTWJa14BgXKnL6/a6GazabRVXVuUyjHi/jk1NUVtcgVM3tqPX5\nqK2t5dixY2QyGUpLSxfsqJ6Zp66uLhoaGlxfUFihBAIBRkZG8Hg8xfPs8/mKfDJ+r0tbPDo6ypUr\nV+jq6qLS5yMSiRRrTLZtg3Jjc6UoSnGMhmHQ09NDbfx69CwLW19fH/F4nJ7McYRqkZdAJI10DBSl\nvLhfvtAgKW4QFzM7BejCK2/sYXpTV4mUclIIsQvYBESFEFohqp8tqTYjt9YrhNCACAvgv2brajZV\nlr7h+qNC2KxuqiM7MUKgsoF0JoMuRHFyXJKut9dmLnIpXYB8TW01IwcGGO4ZZsjQqFi2kmFvoclF\nuvs5ikBXfJiagyVUfPFqKnasZvDIcQ6dPs+G+vo5wdcMyiifydKxYgXHjx5l3YYN3HfPPagBPy/v\n2Y3u8+EPhcjm8ySTSXRVRZHu+BzHQVVVNzVTQMZECuyNquIyOiYTrpDIiRMnaG9vZ+3atdi2zfT0\nNF6vt3jjqKqKvCaemx1dSSkxAn7273mFRGKatatXM5qYIB7x8ctnnmLl4jYe2rIDMsPcjDmpSQxF\nYXFNKcubbuOll3ahVZUTj0ZJpqaRpoXHdxWaeDNEUTP2bqNubsR0bBQUTEVi4WBfp7u1tr4Kn98o\npFOkC/K+yR+oaRr19fXYtk13dzfl5eVv/qGCpdNp6urqGBpye07mrLCEjSpsdFUS9BtIqRf7NUpK\nSkgmkxiGMS8lCBRhuvF4nGPHjlFdXU046t5fGzdupLm5mWg0ysDAAP39/SiKwuTkJMPDw9jhAAMD\nA1y6dIm1a9cihCCaSiGlpL6+nt7eXurr68kN9N/Qb1RVlZqaGsLhcJGZE/OtBQtJeRbIkQfyThLH\nCmHlr1I7LDQX74S96eJICFFeiOQRQviAu4DTwC7gwcJu18qt/WHh7weB37xRfv5GzGNLfMDp14+T\nTk3j0VWy2SyXLl0qIkjebpuNfnCkhS0s1q7ZQPeVPrp6e8iqggQC3WV5J5dK441GihNqKYKMtDnR\n30+wqYHn9u/hSiY95zuam5td4QddJ5lMMjAwgJlzmWL6RoZZvXkTazetZ/HSdkIlUWzpSvylshmm\nkoliqkJKiW3beDwebNsmm82STqcxTVeK7fDhwyxevJhoNFp8QMzM2cy/C3F7zEDEUqkUuqry/M92\nEvB6WL18GQGPQExP8Novf8G969fTGK/AXECgIpfLveGLQgewoUoU8tz//jsYGR3kX3+5E93QsAqw\nxN/lHP9bQFxYqQS5TALTypFz8qSv0ydSU9GA3wgjHN2Vk3RuHme8bNky/v7v/56xsTFaW1tvijkx\nm80Si8V4/vnnOXPmzBxiNmnm0IXEUEBxLGorK0in0yiKS5mcyWSKRd9rbcZFbN68mUwmQz6fJ5VK\nkUqlGBsbY+fOndxzzz0cOHCAiYkJ/uzP/oydO3eSzWbZtWsXzz33HOXl5VRVVbF//34ymQy1tbUc\nOHCA5557jgMHDtzwb1QUhbIyV/Zw7969XLx48YY/e621VgdZVOujtcZHW12AxXXR4jxcby7eCbuR\nq6QK2CWE6AReA16QUv4r8DDwRSHEBdwc/OOF/R8HSgvbvwj8l995kIaO5jHIW5a7dDRNFEeSSqVc\n2N/vpSHGYSqdQgqFoYEBvKpGOpVCSFe2TKGgbSscFCQeTQHHIef3YJWESek63ujCjF5CUTClQ8rM\nM5FKYqsqoZKYm3EQKkJ1ycoUTUUzDBzc5q1YWVkxIjdNk2AwyNTUFD6fj0AgQDqdZvfu3VRUVBQj\n/+J3Frp/36gLeMb5q0Jw+uRJAoZKe3MTtRXlXDh9ilcP7mVV+xJaSiuoj0RJXL5807OaymRQNA1F\n08jlLaamkzQ1NVFSUsKhI0fw+XxksnmX2+U9SGfwZialnM9KqligWKi6JG+lGZ8cpkRVCCgO0nGw\nRA5H+rDUEIqmU+oXGOku7lxRgqdinLw+iOrLo6oeVBEAVQfVXRNc+/L4g0ynMnT39tPbfYnpiVEO\n7tvDi7/4V3a98Bx1VWF+9uwTLGospyyq09v9OhvWLqaiVKe2KkBDbZh8ZoiO9hoqSnUqSnVKowpX\nzh9haUsFPReO0lIboaU2Qmr8ClvWLqEsJLBSQ6zpaCRk5BgfOEd93E97cznvv3MDVRVelrZVUVPp\nJ5saoKO9hnDApjruozym8cAHdiCcSUbzEySVDLVLG+ga78EJQNeV11m+spGGphgf/+QHWb22lT/6\n1Ef5nz5yP7GgRntLDXZmgpU7NuCvibFi+3pW37GZpVtWc8s9dxBZ3EzN6hWMaeBvqqNkURNXUtOo\nFaVcSU0jYxFaN6wn0tTIxvfdR7C+jpKWZlef+DrssldPq4piqag4RGIO3sgkhpjGY1oEdYuoYVDq\nT7Kjfbr4qlYPUa0eQuRPYGf6sbO9eBhFZwzN1ua9FKEj0BBoSEe5YfK1G0HddAKrFth+CVi/wPYs\n8JEb+vYbNA0LFQ1H2pw5e5ryhkVMjyfcZp3fw82vKAKEwLZB17yEA2HKyivJh3xkJQgpGRkapqKm\nGlO4J9plD1TwGn7UUISGdevonpom5p/PyJc083giYWJ1NWQ0BUu7Kg4827nlLYt0MsXQwACaprFo\n0aI5zto0TQzDYGBggGA4TPeVKyxfuZJYLIZjWfNy2LNtJi8/27LpNPl8nmPHjhEJhti2/VZU2+TF\nF3/NxOgIH1i/kZZImLAjmXIsFre3kXESNzW3moDk1CQCBc3QURUN4cCmdRs4e/YM58+eo23ZUjcn\nrIB8RxJ17775/X40IZlIZ5Dq3Ah7ZmVWV1dHhpuj7h0cHCSbzSKlJBQKEY/H8fv9fPd73yPgV/jW\nt75FPp/HcRy+8pWv8B8+8XGOHDnCI488Qi6XY+fOnUgpOXv2LF/72tcIh8M8+uijtLe309jYyJNP\nPllk51yyZAl/9Vd/RV9fH0uXLqWlpYW//du/5cEHH2RsbIz9+/cTi8V47B++z8c+9jGmp6fZu3cv\nTU1NHD16lLq6Ov7mb/6GM2fOoCgKq++6fZ7oiS8QIBwO86EPfYh0Os0PfvAD/vRzf0xXVxfJZJJc\nLsfixYv5yU9+QiwWY/v27ezevZu2tjYeffRRXnjBBRBs27aNI0eOsG7Vanbt2kV7ezvDw8Ns376d\nxx57jA0bNpDL5Xj11VcZGxvjzuXzXOBbNsd/VU++fqnrD/QhjcRYCikEyalRpCLxBucHYGbaVdJK\nJpNkzSlMc369YyF7T3TGTlk5RjSDBtMimBNYqmRSUfCpGpYiMLySiDPBjkY/+w7+nBrupr5pMecL\nSyohFVQxd6lrX4NEsPLzJ03RC0oFBXOus8KXUqI5KiUlYUJN1XQdukw2PYVS4sWyXDETK5nCV1ZO\nXhdoioaWy4FlEfZEGDQtwh3LOPXKYVZVtRePO1OIQUoCfj+b129g165dVLzv/e7mWWkVaZpMDo/Q\n1dXF+vXr543v5z//Odu3byfg85HO55hIJUlmM5TEK8imUnjUNz/Vqqq6alyFyMXweunt7SWXzrB0\n/QbsZILXDh9mcHCQ2xY3sqhcR8gMk1IiFRtLAwOvmz5Kp9EUlWg0iqqqjI6NcOHSRZLZHOl0mrGx\nMfr6+tCHsmSyaVSvTkNrI8lcmrLKyiJMb3R0lLPnzzGVSBCPx1nU2oJtOSxpayWRmMDQPQvyzUtA\nFtMa783UTS7n0jWEw2HymTRZYSMUBaGqaD4dobuIkYsXL7Jx40YmJyeJVN8cisS27aIGanfXeXRd\nJ51O89WvfpWSqJepqSk6OjqKgiJVVVUMD7t1lurqavx+f1Ew3jRN7rjjDioqKhgcHMTj8dDZ2VnU\nb52enmRkZIRIJMLKlS5SbGRkhOrq6qJy1Y9//GOWL1/OqVOnaGpq4sKFC0QikeK9kMvlioR4mqaR\nSCRIJpOEw2EMw8DM5dA0jd7eXnbs2MGXv/xlvvWVr7F+/Xr6+/vp6+ujvr6eprpaSkpK+M53vsPK\nlSvxer0kCjQlkUiEeDzOE088wf33vY90Ok02m8Xj8ZDL5bj77rvZtWsXw8PDrFmzhldffZUd7ctv\nSqLSMAy3J2ABcS5hXE3ZZO1C/0JA4Nd9bsBW6jZndvWcLe43Q6HheOsBCBkqmibm1dWuZ+8JR5+1\nBMdHJL5YBZoiQU67ePoCN1NGsxAyS1hAe0uU3svHWd1QTiQzgsfKM5kz3xKMyiUme/P9FMBQVaIl\npdB9mbqaGuzCdstdRBHEhcVZitvmoc5CDgkUwpEIw9Pz5eJmTOLm9fMLLFDS09M4ls3p06e56667\nrj4gZtkMS+UMV40W8LN+40Yy+dwNN9VYlgVSkMlk0DSNwf5+NKHwgQ98gJ6eXvxTvXgSozywbQMx\nxcZSXa5v4QBCouB20kop+enOnWhCxeNxxaFrampobm4mGA5TU9dAd38fuqKCtIqQPFUrtKrnTDRN\nY2Jigo6ODoZGhhkYGGBweJjEdJLOzk6ee/ZZ3ve+u1m0aBGK0IrHEG+DHOS7YaZUcZCA2w2s2QK7\nAGgJhUIEg8FCdHtzed3ZXPgtdZVEIhFSqRSVlZVs3bKGaDTq9iVoGo7jsHfvXj796U9TWVlJe3s7\nTz/9NLt27eLzn/88jz76KMFgkGeeeYYTJ05w8uRJvvOd71BZWcnOnTs5fvggf/qnf0pFRQXT09Ms\nW7asGLm3tbWRz+f5xCc+wd6DB3jxxRf58pe/zNe//nWSySSHDh2irKyMsbExSkpKWLduHd3JKQKB\nACUlJaxdu5a777qLmCb4+tf+K8ePH6epqQkpJV/84hc5c+YM3d3dKIrCiy++yF9+8xtcvHiRb3zj\nG/zgBz/gkUce4cm//weGh4ddicV0GsMwyGazfOlLXyIUCnHq1Ck6Ozt55C++STweZ+vWrfzd3/0d\nodB8AZjfycz5vsqjJzHUHCgWpq2AI2mou7r6n5x0A5+xhNvLoygKpWXVeLw35sLfE45eeP2cSOaI\n+SU5x6TcrxPQBXnHxsxbePWrNNvxsgpXR/LKBazEIKqw0d5iwNbf309ZeYwjR47w6quv0tTUhOM4\njI66kH/DMIhGozTU1bKirYOJscuUlpZyS1WMfZkJrEQCxRvCUhUmL1yidsVyLCGwpcQsRJmBQACp\nSzLJJNZ1il5CCHRdx4Ng5er5S8RUIskru3dz9513ks9m0WcRZM3YDNRsamKCS5cucf8DD2AXOPtn\n+PyBN80zzow5l8tx/Fgn99xzD+PjE6QSSXyDl7l9ZRt19XEyyQlee+1I8TPDg4MgBU2LmhFC8LGP\nfQxpupq8Mw1vSIWsKujqHcLMw2hinLp40GWvVBScvNsfgHCpkz0eD+fPn0dV3QdGbW0tyWSSxgb3\nBj/ZeZz/828eZfWqNdTX19O+dAlTU1MoioLmefPc5e+H3kPgsTVXoL5g2gL6CZYmQUCZqpKYnKKM\nKQbqo0TDHlQRpqYqRtCv3ribLzAnplNXl/ZpYDwxxunTp5FaiFUbthXfe+34GcJlNdx254e51D3B\nvv0n+d/+l/9aOJbNb186yLlz5zh37hymaVJav4iXO89y7sI5Lp44CUKwfOkyvv/UTgAuX75MQ8PT\npBI5ui7+lDXr11NZWcnPn3sOVJuOlSv5xYuvcPLECc53duIrLWXnL19mfCRBvHYRJRX1jNpXmJ5K\n8eMnnuHsuTOcPH0cdXocW4FFGzfy/MlOekZG6T+wHyaTtNU28sP/9h2qHXj8L/7KTTPt3QuAF3jm\nH59gcHAQIQT33Xcf08MjPPrf/hohBGfOnCnOxc9+8EOOHTvGj7u6CAaDblrtRqJ5RwXFRmIjVAcp\nFk4xhsT8+1faOcACGwwcUMAbvAreKA26GYo6eTV1d/nyAczMwspd19p7wtF7/WFOjDvk82nK7CSb\nQxkaAzaa10PA48OUOTQVLEshlckgLYXuK30MDA8xNpEgEC55S1nb1w4eRNdVVq5cyZ0P/xemU8ki\ngsVxHFKpFPF4nH2v7OHcuXM01q+YdwwPkoQiQdMYsB2QDh4ERmGpMGFIHFXgM3N43wBKlUwm8fj8\nVFXE57332v79vP/ue/D7/ddtaqmqqnIRSKrK1m3byJp5VASKrqFKbhiCN0ND/Mtf/pL77rkbW9jo\nPpWBkR7W1FeRTU/y3FM/wh/y09hcC7gpr/aOZQAIx0XRpNNpkCoew+tG2+6bhCwF3VaQpoKWd3Pu\nsiBY7uAWXIV0isggXdeLBWfHttE1A6/XnYdNm7dw6623kkgkOXz4kLviufvOmyna/l7oPa41e4HA\nJF/Y7gi3qG++g9mmW265ZV7uOxqN8tBDDzE4OMilS5cIRyL80Z/8CQII+t0U3i1r17Ju0yb3Ogz6\nqKyrZfnK5Yxs3oJUBMuaWorHO3fuHNFolIAvwunTpwkEApSVlZHL5aiIl1BVXU1ZWRnLli1jcNs2\nsrkcTU1NTE5OFumKY/VV/GbXS5SXltHSuoiSmnIGnCRCQk1VFX7NQzgSIWxbyMkkW9uWUioFAQfS\nZp5gMDhHpvADD3yYYDDI2bNn+Yu/+AtKSkrw+/10dHSwbNmy4n5N1TWkUimWL19OIBBYUOnqvWAN\nDQ0Yx1I3tO97wtGn0In/4cP0+730ixzdY33EB07RdOEMdwQdfKEAeTsAAoJOlmBhJTXp1QlnTEIx\nlbFrbm5VXiPaLVwGnWwyRWdnJ1PJaWoqK9i0aRNenw/LNFFtgSNtVwhbAKEQIp1l/YqV2OPTlNYE\nOHT+HL883cn4qjupLm1GZl1+6chHH8QCPIqKgqBPs6G6goTqw6M6REq9HJsYR9fmO/ucAE13C8uq\nqiKkxHIcFEUhn0zR1tZWvNjcJhuJcCSmIlC8Hs6dO0c8HscwDJcHXAjsmRSGbbnCycWJcf/RF/CF\ngUAAMzvBkUOH2H7rrXi9PkTA4fDe3cRUh0gohmma3LrDlZS7KuM4yxQBKKgzS0o5t18ph8K0YWFa\nJueGrlCqlFERDWFJm2i0hKOv7SNeXkpdVSVmziRnS0ZG06RzFpWVlei6B0Nki6UV2wGPoXLHbbdx\npbeXfXv2ogANLYtQVKisjl83O/f7oPdwkEyrDtqsAqtqz9/dUgSWcEW605ooinW/E5ZOp6mvrwfm\nCnp4PB5eP3GSRYsWUVVVVYT/WYbGysZGXn75Zaqrq6moqsJ28oyNj2MYBvXNTTjMFQiprq7GcRxi\nsRjr1q0rIuTWrl1LWUUUy7IwHRu/38/itjZM05xDtqdpGiOJadauXc3Bg69RVlFBTW0t4VwSR7hF\n2f6BASKxEqrq6xDhJMFgkIADIceVEfZ4XD6pGTt27Bj79u1j3759RZjoLbfcQjgcprKysrif7kh0\nXae6utoVz/H5yEzfmEP9fdpMmvRG7D3h6PMCej2SqG2jKypm40ouyghWv0ONnWTVAkgDTRVEIlF6\nr1yhtiw8n+lPmZuiUKSgt7eX3p4eOpYuxev149HdFIFSaDbKYyKQqFLBVDQGR0c5PDxKIpuhuTzO\nyPEj1C9qRe/rRglEXMm8a6hPHSExEQhFI3bnbWA6SCSO49xwMSc/k15xHA4dOsRtm7fM4cl3KCid\nOA42ksuXu7h727aiPqZl29x0/zhu3u/gwYO0L26jpbGJ8fFxDu3aTRTJpoYWIPk7yxWqjkKJo2E5\nELIN/HkNJe/Bh8r4UJbzpwYo21JLJq8TCJZy6txJTnWeYeuOHWg25HHm0PaCq7E7nUxSVlHO+s2b\n6Om+wsjIMOFICF3T3pCP/p2m95CKguXzzGl7Vwvncfb1kC48kE3TRPo8jOQyBHBJ6BzHwTAM9yFf\n+MjvQmY2U8/K5VznOgNR7u/vZ/Xq1QCkUil8Ph/JTJrDZ86hqipGLIqvvBTb50GTKtl0muTkJOFo\nFCkl3lnX3Ewj0Awr5sxvDYVCBXoDBV1VsPNur8bM/rNrbaFAEFkIWLLZLEpKI2uoKMIhlU4TiUQQ\ntoPXMMhaNoau43HAY1+lTJ7bD+M2X61adTU9GvC6aZTZdS9VUfH7/fj9/uLK3riJQuzvy25GD/k9\nMXrp2FQ6UN49QCRrMZY+jZKZpDIaoH+8fz62E3AcDVWxUbLTeKU1r71ESK3YVp1MJhkY7OPosSPc\necftlJWUks1mMQIatpQMTY0TLK2gf2yMHz7zDMFYOZ6KSjwda9FXNJFKJDh4+RL3KX6y44L6ikVQ\nVkHOzjITIs9cyBKJ14a0xyDoQFoT4JhMTUyyeNGiN5yHIjmUdDtRJ8cnXTChIlAQRVSQLUBBYDkW\n6ckMg709jI+PU1VVhW3bKIpyU5wlM01Xe/bsYXHLIurr60kmk1zpuoA/k2D9yg585luHNObzLr1F\nLpfDkpKk5VBeGmUknWSgV2eyN4HIK1zsuYQn62fwcp7BC1fwhYL0dQ2xffudeAyBNHwEpYNpTs45\nvu5Y+ISGzJroQmdZcyuOCqdOneKnz+18w7rEO03v4fME6E0m59yQZtod/2xn7QsFySExVA1NN4qI\nq3fSKioqmJx0kTIDAwPU19cTjUaL76dSKXp7e1m8fhWJRILx8XEujg2S7rlEbnQMO5XGr2s0t7Yi\npGRxTd1Nfb8i3xgo6zgOCPjQ+z/A2fPnOXflAtG6cmZwDtdmJGfoUK6Hnpux31c36nvJ3hOOXlV1\nohNJmsfG+U9btlAR87Pr6C/oGR1BVgILQEVzWYdI2E/nmWO0rb3FLafNNuEwODREQ0MDtmPS3dXF\n1q1bqagsdwujZg5NeBkYHubSdIbf7H6VYQzWfvYLlJRVkkClPy8Y0xT0QJxgaTWH9u/DOnyEumVt\naLYgrzhcy8SnS8gqBUSOoIhXv5nuTE0IhKIQ8PkKnB8CVLV4IdsFjhdXXamP+tq6ORG8wg3Q9cvZ\n43G5uxOJBNG2dlKpFJZl0d99hntXNBNSsmgab5lLYOZB4vV66U9leL7zGMPjQ9iql9CKlUyFS5CO\ngbN5DW2RMvZePo9XOFzu6eXo6VMsu3ScT9+1hXhjC5pjEQrMPb4iFbyGh1Qih+7xcuVKH460uWXZ\nWiamMqQzb94V+U7Re5SVVcnSGe3dgjne+VqoiteDVtg24/wsy8Ln8zEwMMD4+HhBxGUmpJnFhrlA\ndG8vwBCpCjeQ6Onu4sEHH0QXacrKynjmmWfw11UQCXsQcopVq1YRjUYZGxtj2ZJqnp3so761mZHO\nJPHSKoaGhtixtJ7N69bzs5/9jIc+/hG+9KUvMTY5wBe+8AUUIRgZHWVwcBBrMo1VYESd4Y8Jqhq3\n3357EW2TTCZZu3wZTU1NPPHEE8TjcTdtlPeDDXbCZmn9EpKD07RGK+no6KCjo4NTp05x8OBBVt+z\nman+QWqCYfwOeBzofv55cokkNc0tbNu2jdHRUZ588kk0TeNTn/oUhmEwOjpKTma5fPkyzc0uiODU\nqVOMjEzz4U99iiNHjhQZMZ1scs5cKtYCc67aCNVGqiaWMF16Cme+81oQGHaD7sG4psB7o17lPeHo\nhZUnmunntrUVVIUH8Dkm9y+vp/P0JP/8Ly+QWr4Cx7HnNhBJCPu8bFwVo/O3r3DHQ/+ey0ODJH0e\ndNWHLQVlpTEcM8/+Pa+worUdj+HFTCSxhYPf0JmaTPA/fvkyWn0r6m3vpyxWzVkEdk6gSJdkCluS\nUwSGESJ22xbOvryHmOUgdRsbfV5rsTnrhrYEWE6OkGMzfeEKy8sW5sVWTPfmnf2smumovHDhAsvX\nrnJlDBewpqYmKioq6OvqQVdVSkpKsIXEviasuRZ144pLSxQpSExN0dPXx5Z1G3EEJDMprHSG1qhO\nWFPwORZSAduee3Gb8mpTl4kECyanE5QEI4SNAAkrR32wlD3nu/mX1w9wNuYjdfo/9GkAACAASURB\nVO/n4DZX2cqdr7m/pxsQpQ0YEqxbHBo/9BkypPm/O8/jPP1rHqqrZsPGMEEjQSRcwfjkMJ5QDDUn\n6Rkdor21ginbpK41zBTDrN7cRvCVhQU8hBDlgFlw8jP0Hn/JVXqPp1iY3mM/N0rvIQQYOtqslJdH\ndSPKoHZ1mzPDK6Re3ZYvQGxmt8zrb0MwWl9fTzab5XN//B8ZHx/nc5/7HB0dHXR3d7Np8yZee+01\nvvnNbzI5OcnPfvYzel86To3mpc7w033iDHU1NaxZs4YLFy7w4osvcv+HHyCbTrNmzRoee+wx/uWf\n/ok77rqL7du3o1uS4eFhGhoaio7e4/HQ1dWFoig8++yzrF69GsuyOHHiBLt37wbgvvvumzWFAr/f\nz7333svE1BW+/OUvMzY2VuRgWn3iCNMDQ3zvm9/iH/7mu7zywkuUlJTw8MMPE41GeeCBB0gkEiQS\nCT7/+c/z7LPP8u3vfJtbt97Kk888weOPP05rayvl5eUcPXqU3l5XCeDSpUucPn2aW265hdpIYP5E\n/huy94SjN4BSmcenm0g1jVfTEbbkjq2bSI0OMXjhEoaho6vq1WWXYqMIAZZFf28Pr768i4qmenw+\nFdtO4lhevF4v33/sMe67933UNTYymZrGNl3IW14IvveLXXjue5CR5iZSlsSjqW5zsSNRpEJecYrR\ncV5ajKQs6las4mTnSXJj43giUbxvkrtTpY0fOHfmNGVbd9zUvJSXl79hTlyRBWimovL68ePc0tFx\n3X2vTV9kpVvQtTMZjr/+Osva27HtHJoBmeQovadf52NrGnFkDluoWFKZFyPaUscEbGw3f+xAJFLK\n+HieJ14/wHk7hSkFbRvvIv7ZPyLjUxgtMPfZ13lwwdUViaqqDF66TPbSGTh/Cf22FTytq3x3z6+I\niSyW0FjVvoj6wSmadQ/VtdV0jY+yfGk7k2bfdY8/y6qAHxby9ArwjJTyX4UQp4CnhBDfAI4yl97j\niQK9xzjw0Tf7AiuTY/Tk+Tn5+Blt8Nk6solcdt42X0MrANPT00xPT2MYBqVvg8MZHR0t9ilUVFRw\n4sQJ1q5dy969e1mzYT2HDx92RXcKvDMtWclL332Mb3zjG3zykb/kls9+Fl1VefHFF+nv72d6cpLJ\nyUnOnj3LwMAA/kCA9vZ2+vr6qAqV0tXVRUvLVUSO3+/n2LFjboDS18fWrVsxTZNdu3bR2trKD37w\nA7Zu3Ypa0I8tLy/nypUrVFRUsHr1aoQQbN++vXg8b0UUnwMdHR0MDw9TX1/Ptm3b2LBhA3/+539O\nIBCgvr6exYsXFx9GLc0t3H777fT09HDo0CE+85nP8NWvfpVHHnmEnf/yhWK3+enTp7nzzjvB/P3x\n0rwT9p5w9PZ0kuhUnuTIOFS2YFo5NOD5n/+Sc2cuMjXQS2vrIlIpl4c+l8vh9fgwdIVjR44zldD5\nxQsv8ODHP4EadnBUhbGJCQzDYPP2WyktL2dkapKAx48iPAyNTfP4T58j9ulPMxapQMkJIoqKYbso\nCVtAXrVBCneZJdymJ0UPkclJUpoHplOuPNybOPqgruCMjRK2TMoCPkxzger9PJ1ZN9WRz+ffPOUj\nJX6Ph6amJs6cOcOSpUvd3KbyxsU6RVEQSIbHxqivrSUej5NNjuHTTF7d+xIbFzdgOQJHuEAUQ8xX\n/vJ5vOScPHnTJJ1Ok86ZvHbqHKdSfkq3bMFXHiHn8XEyWk9KSFKKIJq/sVy/I2B0aAiv10v57dsx\n79hCSlUYElC5fT0RSzIyPsFZ8uz/zT+zTJFsCnuIZiS6Y6EtTCt0zdS98/QehqLQ4JvbcONdYMFd\nHnAHPDudkyg8DKPRKKdOneL+++9ncnKUaDT65v0QyvwAYebhGgqFsG27mFJZu3YtuVyO119/nYmJ\nCRobG3n00UdpbGwkFovx+GP/F1Nj46SmplnWtoTjh4/Qun5lkWVyRtA7nU4Ti8WKhGRVVVXce/u9\n/OM//iNnz57lE5/4RJGqeOfOnUxPT/PBD34QcOGYL7/8Mp/85CcpLS11G+gK4x4dHS3KW7700ks8\n/PDDlJWVkU6n2bdvH73Tbi28t7cXx3EoKytztZ81jVWrVrFlyxY8Hg+//vWvSSQS3HPPPSxdupTm\n5mZOXzxFNBpF13X6+/vZtWsXn/zkJ0kmk8VejlQqhXcBwZU3MneuF0qgvTv2nnD0fk3DN53EsP3u\nk1S6zSNDoyM8/6tf8NmH/oC+vl7CwSD19fUudMuWOLZJeXUTAwmFl159jYGebuorSkGCIVReP3KU\nW2+9FSEVooqXxEiCk8kJ/mnfa6z4gz+kp7SSPAqGqiARZMTV3LYixdU8t1RwhINQVfzRCOFojIwU\n4Lx50lpHYlgWfkCzb7xEKoRLRVBbW/uG+ym4qfOmpiZ6urvd+VvAkSgF0ZAZU20wc3nOnjzJpvUb\n0ISCX9U4sutXdDQ0UlNSYOKcEWMR83WBJiYmsFSJriokE2l+e/QI3lgDpXfei1MeJ6tDTtVI2l5s\nlAJY5sZUgzQJkYg7BsuxMFVBhdARikYGHUsxcMIRsiLHmn//UZLH9rK3+wL/ecf9WFfeOtvg222q\nhOg1z7aFbjq14Ec8sy6RGdagkpISurq6OHnyJA3t8/ss3g7zeDzk83lisRh79+7lW9/6FoZh8Nd/\n/dckVYqvtXfs4NixY7zw0ksMDQ1x9913L1gPSqfT+P1+rly5Qk9PD4ZhMDg4SCwWIxqN0tPTw5Ur\nV/jsZz9LPp/nySefZGhoiFgshqZpTE1NURasmndcv9/P2bNn+e53v8sXvvAFWlpa6D06H/Q0k6p5\n+umnixw4tm1z6623snv3bh5//HEGBgb47f6XCYfDBINBdF3nqaee4h/+++NFGub/r9h7wtGXR4JU\nKyns8VE0uwlFsZDAhx+4nw8/cD+KI/nVL35BZ2cnyyMhzKCPoE8wMjrNYCKLPxznrls3MnppCOXs\nBRralzA62Ee0vAy/0MhLiwsXL+FpXMr3X95F659+ieOZHD5FcRlxZCGoFteh8xQOAdtBlYKclPjq\nasm9foqU30v0Glz8tfomupGmXIPK2gpMK4V/AUiAI1xem5nofUZwobevh9Ky2IKY9+LQpIqQCmWx\nSk50niaZTBII+jFkoXArJSgCtfCQsQvNR5Zl0tvdRV11DTXV1ZiZNI4tEAmTpfUxIqEoOBkc1cLj\nCCyh4wgHny1IksfvjVLqr2D3kbPsu9hF9frleP/wYQ57yhlVVDwSFCSmEBjSFbZwBFxLJ78ABRGG\nLCCLCtA32xKETYeLv96F7rjHRIASDuEAl30qpMuoVFQe+LufsDQQ4U+21tJRGUUReeS7KDwinTT5\n9KE54uDZpLuqm71tBqXrm/U09RUYM8RwD01+yHYfpjSwgqgi8JRGGXNsUpZEmgbWzOoTcFCw/VlQ\nLISjYgtQsQk4V+s0/f39OGgY3iC19c2EIqVYjkLnqUsMjaeRJXFu/ciHGWtsZCRlMZQyOXb6Mu1b\nb6OiuZ1v//nXyY3lidUsxsx7QAbxCQ/9Q/14hQctD8saWnnq2/8dkbEx4mW8Pj5OVXkpbckk58Yn\nGBodo7RtCWfOneXY0deZnkqRzZj09gwQCcdw7IyrgzALJTM5lmX50jVgG6xasYFvf/vbXDpxgmUt\niwhaKiXSoNwf5fKZ08SjEf7qf3+EPXv2uBz1pWXES0uprqjgzIkTfO0rX4FEDhI5kgNjjHX14/F4\nOPDKK9xzzz2URiKoUpJNJnH87qrsjSDSlmUhpM1VZO7vZte7N96KvSccfS6b5H23b+QXv/o15lQH\nXKNPnLdMNm7dwonTJxDYKHaeSdvEEw0wMjxGR2UbqYuXuG1xOxe7LnPh+Rc4nbFpWLUCy8wwlU6y\n+JYV/N0/PU/ZF/6YnsQ0UVXnxliar5orQqIS9QcYSmeoK4m9aUu6Jh1Gz57jE8tWkFVgITyMIgsg\nmALf/M0MS0pZ+JzD0qVL6e66QlNzY7HBSggxBy2jFh4myakEE8OjbNiwganpaTTpMHWuk9aqUsoD\nPoRtYlomjuWQRMHjmAQcB81UcTTB0cEe9vSq2PFGQg/dxx6vRcoI4xUKYQdsFCzhFJ2PwI1u34rL\n1XDIKBDbsbnwf9f0gmKQYik4mkOJY7Hsvo8w0vk6j+17ga9uDRDxp1320XfJPF4PLS0tbqdwwWri\nbnPO7G0LWVuh6ayi7CrkcaL3Ehcvn2bJmpX4yuOE/QHSVg4LtRioONLlTHIcUArSdbMTOYqicPbs\nWR544AFyuRwPP/wwuVyOVCrFkROv0zM8hDB0fOEQPf39jKuAhCEdogMD/PbVA0yPjqE1VuMrifLM\nb35Nf/8VXj4CKoINO7ZxsbeHj3/6k6S6hmhcs4q1t20npykkJyc5c/Q4+alpfD4/+176DT/duZPJ\nyUmWLl3KK6+8gpSSzs5OugdHqKmpYfPmzcWx53I5XnrpJQD+8+f/hM7OTmobKhgYGODpp59mbGyM\nsM+P1/IyODjIyZMnSaVSlJeX89hjj/GRj3yEc+fO4fV6SSaTnD9/nuHhYX70ox8VUzX9/f18//vf\n5/Dhw0VOnH/r9p5w9IODgxw8sI94ZQUXL11ixTIXjztTiFQdQcgbYP3aTXgDIWwECIe8aREsiXL8\nzElCtsmRi6fx+v2kbQs0i5WtjWRMSWlZnH/61Qu03Hcf/VkHn+rBEvZN/3i/FGSkxBQK3voarIlJ\niEXf8DPStjl2/Dh/0LAE7Q1SPTPyiQJAVenr6+P06dN0vEGBdbb5fD78AS9DwwNzC52O46bCChC8\nGaRCJpsmGAkh7SwhDcgkyaZHaamtQMgcjglSAdXWUBSJx9KQQqcvb/G9vbuZaGkidO/95KIxzo+N\nM+X3oo1PEXCgpq6OiWya9PAYkZoqTNMkZ1sLw8puwGauA0eAlApa4XExc7iEz2FKl4zYMJCaomr5\nIqJ2H789dZwty2pQ5Lvn6B3bJpFIzKEcmGkiupaG4FrzZF0hl8rw1QJt0tGYtBXSvWfJpoaJlFcS\nLanGEiqzAbZJx4MlFBerLkCXSjEo8fl8ZLNZ9u3bx7lz5zAMA1VV2bBhAyIcRI2EENIm7zWw/V4m\nVcBQGNVAn57gcnKSbDqJqGghH/YTLItQt34NPceO8v+2d+Yxdp3nef+9Z7n7PvtCznAXRZqiJGu1\noip0Y0u2UBUoGrhwGzQO0KJNARdI0dopUKBA2rp1kcYFWgRBLNRu2sRRkqZBbKOVZUlO41C0KFEU\nKYrikMOZ4exz587M3e9Zvv5xzp255Aw5I3HIy+U8wMHcOffc8531/d71eTO7dvHa9/8Us7PL63u7\no5ehJx6le99upqamKJfK1C1FWjfp60oTthyGO7s5XioxMDDAY489xrlz5xgfH2e2sLIudXR2dpY3\n33yT+ekZ4okEju01yF5aWmJqamqVnTOlUhQKBbLZLABvvPEGpmly/PhxZmZmiMfjVKvV1cl2fHyc\nUChEo9FgeXmZqakpRkZGaDQanqBvn1G4LZA7oZnD8OAO9V+/8Q36+gd56y/f5LPPPQa0vOBOHeXC\n2NgY01eucGDvPpQGRTR+evojFmyLYTOCW/P8v1EV5tzl93nh8y8xbWb4g9dO0PXXXuT9SJTpTB8W\nCtNdb4ZZ12jSLn4BqkDccQk5OoKXEnjlgzPYH43Q/dIXV/PE8bdvRbY6xvnvvsJvvPQlbBTJyPWv\ndzMAG07GmJycZHp6msOHD9+4GtXVQGlYTg3btimVSnR2dq5qIU3entVr6bq4ts3PTp7kyOFDRMKQ\n0hq8+8ZrHOrK0t+ZxRGNlaUlzHAYQ2kkU3GWG3FeO/0R7xfK9P+tF5nNxPlQj1PG9YjLXCFnRAi5\nJjWngV0s4xbLLFsWg7uGcZVCWJ+KvxXz1PRzh+u+36d511x/sZVQM1xigLO4Qv6DM+zr1cn86Xf5\nR08f5t/93u/x0fhUW6T9jmxG/dpzP3eVwNJv8Mq13uvoBlzjhnIpi7BgVSkaGhUbXCI4yqC7q5NM\nJkMqnWHejdLZu4OVlWWUJoRFY+6awH4ipjMyMkJ/fz9KKSYnJzGOHKJSq1GoV1HZFCUN7EYD8SeM\nUCjkNdlxLeIhr3q0uLzsZUmtLFEql6nW6wztHkLXdT44fZ7OXI7Bji5CtsP7757ihXQn2WyWRCKB\nUopwOMyya6/WDdTrdarVKqGkp0S1Bqib7s1kMrmqOJz76D3ee+sEzxw6QsL13sG55Tm6urqu4qnR\n/NzUVksqYnpPU2uLSjMSZWRkhO7utXTo/vg1boYNULeVn0df4fzoSdAbhGLrky+26n7Zyrvx7T85\nx/R8edNn+47Q6JPJBH3dHXSkU/R3rc81l0QIZdlkO9JcOPM+IeXSaJhYmiJfL1LPRHANIZ3LIg2L\nTj0BpShLI+9j7TrKyMRliERJRpLMOjYJ9E9EGlXWXRKOhqHAKZaRxSUW8vPeA9G8AdcE3vaW65g9\n3Thi+772G/tlWifeVCpFOp3e1MQHMEMGoVCIeDy+LlOnVRlRSqFE2L/7ADo6CoeF5SWK9Rp9vf0o\np45Swvz8PF0dHaS7esmvLPIXI5cZT3ax/7kX+NBUVBwDTTkkNcEGYq5GqVRkdnqJ8JVJGrMLqL5O\nIjuG0G0H8aONn6S+1sVn4AQERb3J06+8eoAwDpprE3MUEjMZfPgwl0/8BKXHuDhfxVV3Su7Dx8OK\nWVu3rscKYeLQk4iS1nRqDliaiYPO3MQFLp9ZYXl5GTu3l47unewc2kG2u4Ncppu5+tVCp9mqr1wu\nr2bOXCnkCUcihLJplkRRF3ByKUIeoSKlWg1XoMOMkbfqTE8WiKQTaAriXVnmi0vML+UxVrL09/Qi\n/d1cmJom19mJOA6zE1f46Yn3KBQKrJRKHNi3z2uB2ZVlcHCQgYEBwuEw2WyWsn19iVgqrRUwDQ4O\nkp/cvB/sjd6jVuuqbntPaSrVItzv8l43Wxb0fq7x28CkUurF7aRyRdkkogpxl+juTfCX7+YpuVV2\n7s/QPZRDqiCuTiqeI26bOItlkulOHAF7pUgqEWfYbYDPV2FTJtvZxweXRnGTw6R7eqiJYlpzMUTD\nAqoahK9JUWuKx2s1fV3hdZLShZoGam6BrmyauWwKVVgk1tNPzXawNQdLF6oixCt1UjWbiR/+iBee\n/XkMFK7m4ug3EvSCaUSoVCpks1l6e3t9Fsg1wd1oNK5qNuDlXbteSiZr7fYca22fGjqWX1Hpuq7H\nyR1Po5kaKMXExDTpzg4+Gh3nwb5BXNdhz+B+fvB/X6fWN81sJkXqc0/zUfwg71sKlI7uukitgVWr\n4paKTI6OYdQsBg4fIvfQI9RdB8sQnHAIcR1i/nlf238qvpFJrHlvlZf1o0Gj4RWfVTznQyYUxtI1\nbIGQCxEXag6IctEVVCTCwc88T6R3kD/4we9j6+3zsWoootek2W047fgBeOw1zVLWlXtD0fR/7Z93\nBPybbdHbkYaONLADS9OABVYuXcK65BH0jBkGyZ5udvT1k4zFKTgxBtJZ5sZm6O3rIRNOcHzi7VVS\nsf379wOwaK1lvyT8tN2dEmO5oZgP67hEULqDqjfYOTDMzoFhJiYmUM4cA31hqpdmMUbqyOgUvxQx\n6BtOwLAnWNcsmGWYXCZ/+ifU8YrhS9nc6riZTIauri5qoRx6JkPJhLIGjiNI3cGuWz4ltqcAJDBI\nYGC2vOIR2UDcNb+316wn3bJIOGCU1yZa+xp+oo0I/VTNQbkNoIEOiHZz/p5PGnjdCB9Ho/8qXlPw\n5jT379lmKlfHcRgeHma5ssz/fPciPypXOfHqKTJzcwwn4hzM9mCqfs6/+hbhUt5zqdTrPJnrx41d\nfVETsRgD3R385OKHNEIJSoU6TjhNXYEuEHa3RBRwNVyFEq+Qp1gsQiYF+WUqvmnpuKDExtV0IvE4\n1JZRi8uYaqt9YG4flDjYVo2oISxOTvPUww9QGpvgx8ePs/+xR5ivV3h3xSZ1YCeNJ44ylchQqdqg\n6YRwqaGo5Bep5vPEYjGGn/05XNdltl6j3u2Vz+c0jSRrNsxWr0HYbeUrcbHEe+gX5xewBPSeHoyW\nbKeia2M3GihlUc0vUpqe5cLYKMxcIteoYtbXa8b3C1o11QcjCaavzHH2nTPUajWqTgTTTJBIZ7lw\n6m3C4TB9GRvLsmg0Gky8dQaA3O5HV/fRdHHU9CixVJTd3R240TBOLMJoYo2QrGw10Bp1jkqcsYUl\nlqwldhMivInwak0nvuxr4LFYjOWFeUY/PMdczWDHoUN0799FTQMXg7AZ9xQC5T1pG6UX3+/YkqAX\nkUHgi8C/wWsILmwjlWsrarUaZncHK5EkY0OPUjiQxBCLKXEplxtcOn4GczLPp9JVjh39NA/FUxi1\nxjo6nJptk8l10BeOM17Vsbvj2CGvGhQRLM3BvA770UbFKJqmoRwHV9OIRUyqxQrpw59i5cxZZsZG\n6Rwa9kkSNXRXUVhcJDozz86ebsKxqJfCqdRqGfhWsFoyHlp7gUKhEPVG7brbNFn4QsbVHNorfner\nwcFBTp06xYEHD6BripjrMhRPMqBFiQ3v4WStwXe+/31k3xB7fvlXGCVOMd1FwVVgRrCLKyzUKzgX\nRokf2M/evkPexOfahC1Fp9LIli3siVnykxPk/ZcPTYh2dZLY7xG73SjuUPHNEb25jeMyOz9PeWWF\njp07cFCYxQoVHapWg9KFi9SWlkBcug/uZ+9TjxN96CH22EWqx1/lrfMntnzN7zVc5aMuNUiG4hiD\nuz1XmpggOppmYDkZdBFqVg0t6jFaNpkkL06tuUWasR+RJfKzDebPVAnlkvQcfJC5FtK+UN0iFLIw\nz11iuGxzqKuXSH6FWNMPdx00A9UAEX9DqdRIGyGS3b10qiQTE5M0rDqRzg5iHd1IKBDsm2GrGv1v\nAf8caJb4dbCNVK7rENEJmSZ5S6iFo0xIlFnNIpFKEXruc3TuE7Spt/neyb/i2aG9PLpjF/q1hTia\nAY4inc1h1leojZwjd+AwM3oUVxQm6wnJNoMSr92b5ioiCuKxGKV4FGdqlsjgEA3xCc1c0BsNVkZH\n2b9rN3HDxLIsbNkoHNkeGAoiusHI2dPs6OtDuS7luoWezjGva3z62DHyid2sqCRLtkVdg6RpMLe4\niBQWyR45RCqWoOLYlAvLdKczLJWWWT77IXnbxoxG2XvoEFaHV/RUKpXIdXexWNpcuxblHd/oqffQ\nFew8eAALRf+e3bhAyHLI64rimXNolQrxnQP0HT1MJJthZX6B2aUi/TrkZ6cJK4tw9OO3mbxX0KpY\nhLUwuun1BUYUXnSlAUphiqCJIkNkLcrt36uDidb3xA+M60JHNEQvBkXXYub0u5gqRCqV8rJ6Kg4L\n4yOYdomH9BjxhRXSukkccIzrT/KtbtNsa2xFAF1Hcw2KepgrH12iX3SiHX1cGh+nXC4zNzeHRGLE\nU17lcLPyN8AWBL2IvAjMKaVOishz2zVwK5Vrb3cXxYZDpzLJiommVXj+4V2c/tk7pA48jhVLgIKq\ncqgaVZaHnuG9HU+Re0RRH53lN//3D/nyU2meTtaJOAmulIrs6VDouqLbLmAsLRFNJ4jUl1iMxalq\nBqZanyFzLVzx/H22eNq44QK4uJZLOBGlo1QmfuAgF370JjMfnOPI4U8xKQ2qmsuuSISTb52k8+9+\nnvnFeVKplNfWbzMOVTxa4la0avDXQ3ObNa6Uq62SRDKN4PLj19+kt6eTUmmR3s4kbq2I1hHlrcvj\nTM3UmOzOsfurX+dnoSjzDROorc6HxVKFZDKJSiQQ17N83LBBaXKcwvHjZB8+Qt+zj/mFWi4VQLMV\njiZE4knKpSq65mAoQXza49ageOtLaWnQtWcXS+cvMPryf2fwkaMk0ikmamXsi5dpaEJu3zCdoQiz\nEZ1FXFhaBFMDM0K+UaUwN8Fz0Qj6HZBZdiegJApXBAcvAyqkOYjW8HijXB1EUXU2mBRD65+/sIKY\na+CKwpEa3aKx8vZZQskk4ViM/kKBzkaDPREvdTiMEMHrpVzconoZ36AVV75UoLZcIK65xHWXkOYw\nOTnJQ0eOMD869rFYYu8nbOWSfwb4GyLyBbzYTwr4FttI5brvgX2qaAhxEZKaIkSNTup0axZlt7Gh\nKSBKYQnYO/s49tV/yPde/TPmPrzA3z7yIE6lTKgngWiKsGmiaRrJmMGK5rEwaopVf96N0EzfMhR+\n84oWZkrbJpfLkbcsBp55goUrk141p+sQ0V3ihobUKri239zhDtDkvTZ9fiVNqcjZC6f44Ow5unt/\ngTfPn6P34F8n89jDnNFd5tzwOk9nNBolFItjGAaL+TwrFy5SnJli8PGjJJ54jKm5eQqNGpqCiJ+G\np4mLQrD9bJ+443VScmSVwXn9cQqYLqhwhIGHHyaxdx8TJ99h9sRJrGSU7n176E6lWS6XKV9nJzUD\norqGNOw7z2Mr66MV9gZFXcYGmR5qg74AhrneMrUbnvurdfIMydVWr3JdLz23xZci5gaZKc76oHAz\nZBxVECUBYUiFBZEy1Mv0R1wkKiRaFA4bm81qRltpOmbqy4TDYfL5vFeLUa8z0LuboZ4cJVEUFmYR\nA5594DDpdJpzb7+DncngJOPoutfCtbFBlepmDYBWbJeipljRvXc/KtpabMHy9+es7be5PyunKFdq\nVMpVGlYaMNEi6yk/3HBp3TrVWN+usN4ywTZrY7ItXgjHcdhq9G9TQa+U+jrwdQBfo/9nSqkvi8gr\nbBOV6+TMDJfKRVRcw8EgJJ5/tmbbhDdovQcQ1g0cHa4YMKscBj//OdSVPr75v/6YX3j6GVYq8+Tt\nCJXqNIOZBJeKNZTScVyF7Vi4gLqGdvdaM0/wBFJhdg7HcejuG1j7zqcsMBAS6RTL0zNMT1zB6szQ\nkCoTozMYovPyyy/zla98ZbPLvG24XgzAVYLgUiwWObB/N2Lr7Mt9ikv5Pv+PAwAACFtJREFUAt96\n5RWGXniJ/I7dLEd15kzBcoXmlW9eF81V1Ks1pucXcF2X5GAffbsHvZTHYolsNOZdV1mz/kUER8CI\nhHFR1C0bTTfR6411j2gz0GcqqGsAguM45E2h9/GHmb08RvHSOL17DrJYrRPVdBxdo9FSubgao9B0\ndg4OUPtgZrsubYBNkNNKq1lfovuUHs7Hy+DWWvoqVKtVpqen0XWdZDJJT08Pji83LcsiEo3Q39+P\nFY2utj28FbBlfUsMaZmY3Y0qr8X1Wmg66+WXstZbTaLWT6ZXzYpO0wK+VtBvTY25mTz6f8E2UbmG\nE3H+48vf5sUnnuazhw4zkErg4pn1xnU072bOzKIBiDArGvbwHnJPHuOn5TpPRFJQXiYTSlBfXKKm\ncijbwFY64GxtHhSFK2Boct2UEUsg6kJVICqeBosoRt95G/DapL3zzjscO3ZsKyPeUjQtFA3PhNaw\nqRgu6aP7+av6IukYhMJCCRdjg7lZdJ2l+QXCCqJdnayUqxiGVznreaS8NorNO6bhXZ+wgrE3/p+X\nllRYxHxgHz1796Ffp8OQiyfsNQWWv++CAbuGhxi/fIWxEyeJPfsolnv9uJ6twFFw7sxZrMbWiNQC\n3CRc0yuKU17CA58gJjU+Pr762bZtOjo66O3tpVgssrS0RDLWufpdOJyis7OTRTtMoVDYxhPxoLHW\nrH1dOK/lwTOafZhpcpl4EAzE2aCxuL1B3GAjl5PdIvx9QV82tJZVzpZrRO6IylgRKQLn230c24xO\nPk4A+u7A3XpOQ0qprrYMnE2rX3/uM1dXxm6gNWzsutmitraB66ZZ9HPD3xkbuHw2+J2przVusa5l\npWuBE9bXbRdx1wRTM360UFxrBTnlZ/SYpkkmk1mlLLjuWE6YigZWJMQHE2M89fPPYUX7GB8f58qV\nK1iWRTqdps9wNu3nABu7cRYqFWZmZigtr3jxMkPHCemrxwkQjqz9rlwuUywW6Yt490tEVtNa9Q2G\nN931K5W+Pg4yOlVgaGiI3t5estks8XicZWPtmbAsi3/7G99k7PL43VEZC5xXSn263QexnRCRt4Nz\nCnA/oTW5YSP98eJFjz660RKj6OvzirE6Ojqo1+tX+ei3ikuXLjE2NkZPTw+FQoFCoUBf1+aUBdeD\nrutomsbzzz+Po4lXnBdeoxABsFqcOfl8nosXL9IbUjSJUhtWHZSGqa93yRhqA0G/Qf+IHb1dVJZr\nnJu7zAMPRMjtHaDSUtil6TG2mjl4p2j095wACc4pALTdWm2XBdZOy+9+G3tL1uqdotEHCHCvom3W\narsm5nYqBPfr2Jvh4xGy3zr8TrsP4BYgOKcAAQLcEbgjBL2fU39PITinAAEC3Cm4IwR9gAD3MNo5\nObZr7PvxnNs99g3R9mCsiDyPV2mrA7+rlPpGWw9oCxCRHXhUzD14icK/o5T6lojkgO8Bw8Bl4BeV\nUgWfBO5bwBeACvD3lVLvtOPYN8MtpaMOECBAW9BWjd4XKv8FeAF4EPg7IvJgO49pi7CBX1NKPQg8\nCfyqf9xfA15TSu0DXvP/B+/89vnLP8Bj+bxT0aSjbqJJR70XKODRUEMLHTXwn/ztAgQIcAei3a6b\nx4ERpdQlpVQDT3N8qc3HtCmUUtNNjVwpVcQTjAN4x/4df7PvAH/T//wS8F3l4TgeT1Afdxha6Kh/\n1/+/SUf9R/4m155T81z/CPisBIxSqxCR50XkvIiMiMjXNv/Fx97/yyIyJyJnWtblRORVEbng/836\n60VE/rN/LKdF5JGbHHuHiLwuIh+IyFkR+ertGF9EIiJyQkTe88f91/76XSLylr//74lIyF8f9v8f\n8b8fvpnz9vepi8i7IvLnt3vsm0G7Bf0qpbGPVrrjuwL+DXwYeAvoUUpN+1/N4Ll24O45zyYddbNq\nZct01ECTjvq+x22yVP8b8Pw1626XRdkui7YOHFNKPQQcBZ4XkSe5vVbnXWnxtlvQ39UQkQTwx8A/\nVUqttH7nE7m1vxpti2ilo273sdwDuOWWqlLqJ3hcUq24LRZluyxa//dN6kfTXxS3yeq8my3edgv6\nJqVxE610x3c0RMTEE/L/Qyn1J/7q2eYD7P+d89ffDefZpKO+jCeYjtFCR+1vsxEdNTeio75P0S4L\n7rZblLfbovVdJ6fw3q1XgYvcPqvzrrV42y3ofwbs8/1cITymyz9r8zFtCn9m/jZwTin1my1fNSma\nYT118y/5vsongeWWF+KOgFLq60qpQaXUMN59+LFS6svA63h007AxHTVskY46wO3D7bAo22HRKqUc\npdRRPKXjceCB7R5jI9ztFm9bKRD8VoP/BPg/eOmVLyulzrbzmLaIzwB/D3jf1y4Afh34BvCHIvIr\nwBjwi/53P8BLrRzBS6/85dt7uDeFbaOjvo/QLgtuVkT6lFLTt9qivJFFezvGV0oticjrwFPcZBOk\nLeKWNGC6bVBKBUuwBMs2LngK1CVgFxAC3gMO3YJxhoEzLf9/E/ia//lrwH/wP38R+CFeL50ngRM3\nOa7g1VD81jXrb+n4QBeQ8T9Hgb8AXgReAb7kr/9t4B/7n38V+G3/85eAP9ym6/4c8Of+59s69ic+\n5nYOHizBcq8ueBbcR3g+5H95C/b/+8A0Xle/K3hZHh142S4XgB8BOX9bwcsCugi8D3z6Jsd+Bs8t\ncxo45S9fuNXjA0fwrMrTwBngX/nrdwMn8CzmV4Cwvz7i/z/if797m659q6C/rWN/0qXtlbEBAgQI\nEODWot3B2AABAgQIcIsRCPoAAQIEuMcRCPoAAQIEuMcRCPoAAQIEuMcRCPoAAQIEuMcRCPoAAQIE\nuMcRCPoAAQIEuMcRCPoAAQIEuMfx/wF1P/8QHNldogAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x120350b00>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "img1 = cv2.imread(pics[0])\n",
    "img2 = cv2.imread(pics[1])\n",
    "print(img1.shape, img2.shape)\n",
    "f,ax = plt.subplots(ncols=2)\n",
    "ax[0].imshow(img1)\n",
    "ax[1].imshow(img2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-06-27T21:40:48.261697Z",
     "start_time": "2017-06-27T21:40:48.256252Z"
    },
    "hidden": true,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "from label_data import map_characters\n",
    "for char in map_characters.values():\n",
    "    to_remove = []\n",
    "    print(char)\n",
    "    print(len(glob.glob('./characters/%s/*.*' % char)))\n",
    "    pics = glob.glob('./characters/%s/*.*'% char)\n",
    "    pics = {pic.split('/')[3]: cv2.imread(pic) for pic in pics}\n",
    "    for a, b in itertools.combinations(pics.items(), 2):\n",
    "        err = mse(a[1], b[1])\n",
    "        if err == 0:\n",
    "            to_remove.append('./characters/%s/' % char + b[0])\n",
    "    for e in set(to_remove):\n",
    "        try:\n",
    "            os.remove(e)\n",
    "        except:\n",
    "            pass\n",
    "    print(len(glob.glob('./characters/%s/*.*'% char)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Create bounding box"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-06-27T21:12:47.375086Z",
     "start_time": "2017-06-27T21:12:47.358529Z"
    },
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "with open('./annotation.txt') as f:\n",
    "    already_labeled = [k.strip().split(',') for k in f.readlines()]\n",
    "pics, x1, y1, x2, y2, char = zip(*already_labeled)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-06-27T21:40:37.359030Z",
     "start_time": "2017-06-27T21:40:37.355586Z"
    }
   },
   "outputs": [],
   "source": [
    "ind = np.random.choice(range(len(pics)), 3)\n",
    "f, ax = plt.subplots(ncols=3, figsize=(10,5))\n",
    "for k, i in enumerate(ind):\n",
    "    img = cv2.imread(pics[i])\n",
    "    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)\n",
    "    cv2.rectangle(img, (int(x1[i]),int(y1[i])),(int(x2[i]),int(y2[i])),(0,255,0),3)\n",
    "    font = cv2.FONT_HERSHEY_SIMPLEX\n",
    "    cv2.putText(img, char[i].split('_')[0], (int(x1[i]),int(y1[i]) - 5), font, 0.7, (0,255,0), 1, cv2.LINE_AA)\n",
    "    ax[k].imshow(img)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-06-27T21:13:20.666994Z",
     "start_time": "2017-06-27T21:13:15.289826Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 5324/5324 [00:05<00:00, 994.88it/s] \n"
     ]
    }
   ],
   "source": [
    "from shutil import copyfile\n",
    "from tqdm import tqdm\n",
    "for p in tqdm(pics):\n",
    "    char = p.split('/')[8]\n",
    "    pic_name = p.split('/')[::-1][0]\n",
    "    copyfile('./characters/%s/%s' % (char, pic_name), './char_transfers/%s/%s' % (char, pic_name))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "workenv",
   "language": "python",
   "name": "workenv"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.3"
  },
  "nav_menu": {},
  "toc": {
   "navigate_menu": true,
   "number_sections": true,
   "sideBar": true,
   "threshold": 6,
   "toc_cell": false,
   "toc_section_display": "block",
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
